Version 5.0.0 beta 4
This commit is contained in:
1 parent
e86153356a
commit
2f24f9de48
276 files changed
+8614
-6044
No files matched your search
@@ -1 +1 @@
|
||||
.ipsMessenger__header{display:flex;justify-content:space-between;flex-wrap:wrap;gap:1em;padding:1.4em 2em;border-bottom:1px solid var(--i-background_5);}.ipsMessenger__inbox .ipsButtonBar{border-radius:0;padding:0;display:block;}.ipsMessenger__inbox .ipsButtonBar .ipsButtonGroup{display:flex;border-width:0;--i-button--co:var(--i-color_soft);--i-button--bo-sh:none;--i-button--bo-ra:0;}.ipsMessenger__inbox .ipsMessage{--_pa:1em;border-radius:0;}.ipsMessenger__search{--i-co:var(--i-color_soft);padding:.8em;box-shadow:hsl(0 0% 0% / .1) 0px 1px 0px;}.ipsMessenger__search form{display:flex;position:relative;color:var(--i-co);background:var(--i-background_3);border-radius:var(--i-box--bo-ra);}.ipsMessenger__search .fa-magnifying-glass{align-self:center;position:absolute;inset-inline-start:.9em;pointer-events:none;}.ipsMessenger__search [type="text"]{flex:1 1 auto;background:none;border-width:0;box-shadow:none;border-radius:0;padding:.9em 0;padding-inline-start:2.8em;font-weight:500;}.ipsMessenger__search-action{color:var(--i-co);padding:0 .8em;display:grid;place-content:center;flex:0 0 auto;text-align:center;}.ipsMessenger__search-action:hover{background:var(--i-background_4);}.ipsMessenger__search-action:last-of-type{border-start-end-radius:inherit;border-end-end-radius:inherit;}.ipsMessenger__quota{background:var(--i-background_2);padding:1em;border-top:1px solid var(--i-background_4);}.ipsMessenger__conversation .ipsEmpty{padding-top:max(100px,15vh);}#elMessageViewer{display:contents;}.ipsMessenger__conversation{background:var(--i-background_3);padding:.1px;border-end-end-radius:var(--i-box--bo-ra);}.ipsMessenger__conversationHeader, :where(.ipsMessenger__conversation) .ipsEntry{background-color:var(--i-background_1);background-clip:padding-box;border:1px solid var(--i-background_3);margin:1em;border-radius:var(--i-box--bo-ra);}.ipsMessenger__conversationHeader{padding:1.5em;}.ipsMessenger__conversation .ipsEntry::before{content:none;}.cMessage_members .ipsField_autocomplete{margin-bottom:10px;}.cMessage_leftConvo{opacity:0.5;}@media (min-width:980px){.ipsMessenger__columns{display:grid;grid-template-columns:420px 1fr;min-height:500px;}.ipsMessenger__inbox{border-inline-end:1px solid var(--i-background_5);}#elMessageSidebar{height:100%;max-height:100vh;display:flex;flex-direction:column;position:sticky;top:var(--i-sticky-offset, 0px);z-index:10;}:where(#elMessageSidebar > *){flex:0 0 auto;}.ipsMessenger__inboxList{overflow-y:auto;flex:1 1 auto;}.ipsMessenger__quota{position:sticky;bottom:0;z-index:1;border-end-start-radius:var(--i-box--bo-ra);}}@media (max-width:979px){.ipsMessenger__conversationHeader, :where(.ipsMessenger__conversation) .ipsEntry{margin-left:0;margin-right:0;border-left-width:0;border-right-width:0;border-radius:0;}}.ipsFilter_layout{position:absolute !important;max-width:100%;}
|
||||
.ipsMessenger__header{display:flex;justify-content:space-between;flex-wrap:wrap;gap:1em;padding:1.4em 2em;border-bottom:1px solid var(--i-background_5);}.ipsMessenger__inbox .ipsButtonBar{border-radius:0;padding:0;display:block;}.ipsMessenger__inbox .ipsMessage{--_pa:1em;border-radius:0;}.ipsMessenger__search{--i-co:var(--i-color_soft);padding:.8em;box-shadow:hsl(0 0% 0% / .1) 0px 1px 0px;}.ipsMessenger__search form{display:flex;position:relative;color:var(--i-co);background:var(--i-background_3);border-radius:var(--i-box--bo-ra);}.ipsMessenger__search .fa-magnifying-glass{align-self:center;position:absolute;inset-inline-start:.9em;pointer-events:none;}.ipsMessenger__search [type="text"]{flex:1 1 auto;background:none;border-width:0;box-shadow:none;border-radius:0;padding:.9em 0;padding-inline-start:2.8em;font-weight:500;}.ipsMessenger__search-action{color:var(--i-co);padding:0 .8em;display:grid;place-content:center;flex:0 0 auto;text-align:center;}.ipsMessenger__search-action:hover{background:var(--i-background_4);}.ipsMessenger__search-action:last-of-type{border-start-end-radius:inherit;border-end-end-radius:inherit;}.ipsMessenger__quota{background:var(--i-background_2);padding:1em;border-top:1px solid var(--i-background_4);}.ipsMessenger__conversation .ipsEmpty{padding-top:max(100px,15vh);}#elMessageViewer{display:contents;}.ipsMessenger__conversation{background:var(--i-background_3);padding:.1px;border-end-end-radius:var(--i-box--bo-ra);}.ipsMessenger__conversationHeader, :where(.ipsMessenger__conversation) .ipsEntry{background-color:var(--i-background_1);background-clip:padding-box;border:1px solid var(--i-background_3);margin:1em;border-radius:var(--i-box--bo-ra);}.ipsMessenger__conversationHeader{padding:1.5em;}.ipsMessenger__conversation .ipsEntry::before{content:none;}.cMessage_members .ipsField_autocomplete{margin-bottom:10px;}.cMessage_leftConvo{opacity:0.5;}@media (min-width:980px){.ipsMessenger__columns{display:grid;grid-template-columns:420px 1fr;min-height:500px;}.ipsMessenger__inbox{border-inline-end:1px solid var(--i-background_5);}#elMessageSidebar{height:100%;max-height:100vh;display:flex;flex-direction:column;position:sticky;top:var(--i-sticky-offset, 0px);z-index:10;}:where(#elMessageSidebar > *){flex:0 0 auto;}.ipsMessenger__inboxList{overflow-y:auto;flex:1 1 auto;}.ipsMessenger__quota{position:sticky;bottom:0;z-index:1;border-end-start-radius:var(--i-box--bo-ra);}}@media (max-width:979px){.ipsMessenger__conversationHeader, :where(.ipsMessenger__conversation) .ipsEntry{margin-left:0;margin-right:0;border-left-width:0;border-right-width:0;border-radius:0;}}.ipsFilter_layout{position:absolute !important;max-width:100%;}
|
||||
@@ -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;}.ipsProfile{display:grid;gap:1em;}@media (min-width:768px){.ipsProfile{grid-template-columns:min(360px, 30vw) 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));display:grid;gap:1em;}}@media (max-width:767px){.ipsProfile__aside--carousel .ipsProfile__sticky-inner{display:flex;gap:1em;overflow:auto;margin-left:calc(var(--i-layout-gutter) * -1);margin-right:calc(var(--i-layout-gutter) * -1);padding-inline:var(--i-layout-gutter);overscroll-behavior-x:contain;scroll-behavior:smooth;scroll-snap-type:x mandatory;scroll-padding-inline:var(--i-layout-gutter);-webkit-transform:translateZ(0);}.ipsProfile__aside--carousel .ipsWidget{flex:1 0 min(360px, 80vw);scroll-snap-align:center;display:flex;flex-direction:column;}.ipsProfile__aside--carousel .ipsWidget__content{flex:1 1 auto;display:grid;align-content:center;}}.ipsProfile__aside .ipsSideMenu{padding:1em;}.ipsWidget--rank-badges .ipsWidget__content > *{padding:clamp(1em, 2vw, 2em) 0;border-bottom:1px solid var(--i-background_4);margin:0 clamp(1em, 2vw, 2em);}.ipsWidget--rank-badges .ipsWidget__content > *:last-child{border-width:0;}.ipsProfileWidget{padding:3em 1.5em;border-bottom:1px solid var(--i-background_3);display:block;}.ipsWidget--rank-badges .fa-trophy{color:var(--i-trophy-first--background);}.ipsProfileWidget__data{display:grid;gap:1em;}.ipsProfileWidget__data a{color:inherit;text-decoration:underline;text-underline-offset:.3em;}.ipsProfileWidget__data a:not(:hover){text-decoration-color:color-mix(in srgb, var(--i-color_soft) 30%, transparent);}.ipsProfileWidget__dataLabel{font-weight:550;color:var(--i-color_hard);}.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{aspect-ratio:1;display:inline-grid;place-content:center;min-width:2.6em;border-radius:500px;font-size:1.2em;}.cProfileRepScore--positive{background:var(--i-background_positive);color:#fff;}.cProfileRepScore--negative{background:var(--i-background_negative);color:#fff;}.cProfileRepScore--solutions{background:var(--i-secondary);color:var(--i-secondary-contrast);}.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;}#elProfileTabs_content{scroll-margin-top:4.5em;}
|
||||
.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;}.ipsProfile{display:grid;gap:1em;}@media (min-width:768px){.ipsProfile{grid-template-columns:min(360px, 30vw) 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));display:grid;gap:1em;}}@media (max-width:767px){.ipsProfile__aside--carousel .ipsProfile__sticky-inner{display:flex;gap:1em;overflow:auto;margin-left:calc(var(--i-layout-gutter) * -1);margin-right:calc(var(--i-layout-gutter) * -1);padding-inline:var(--i-layout-gutter);overscroll-behavior-x:contain;scroll-behavior:smooth;scroll-snap-type:x mandatory;scroll-padding-inline:var(--i-layout-gutter);-webkit-transform:translateZ(0);}.ipsProfile__aside--carousel .ipsWidget{flex:1 0 min(360px, 80vw);scroll-snap-align:center;display:flex;flex-direction:column;}.ipsProfile__aside--carousel .ipsWidget__content{flex:1 1 auto;display:grid;align-content:center;}}.ipsProfile__aside .ipsSideMenu{padding:1em;}.ipsWidget--rank-badges .ipsWidget__content > *{padding:clamp(1em, 2vw, 2em) 0;border-bottom:1px solid var(--i-background_4);margin:0 clamp(1em, 2vw, 2em);}.ipsWidget--rank-badges .ipsWidget__content > *:last-child{border-width:0;}.ipsProfileWidget{padding:3em 1.5em;border-bottom:1px solid var(--i-background_3);display:block;}.ipsWidget--rank-badges .fa-trophy{color:var(--i-trophy-first--background);}.ipsProfileWidget__data{display:grid;gap:1em;}.ipsProfileWidget__dataLabel{font-weight:550;color:var(--i-color_hard);}.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{aspect-ratio:1;display:inline-grid;place-content:center;min-width:2.6em;border-radius:500px;font-size:1.2em;}.cProfileRepScore--positive{background:var(--i-background_positive);color:#fff;}.cProfileRepScore--negative{background:var(--i-background_negative);color:#fff;}.cProfileRepScore--solutions{background:var(--i-secondary);color:var(--i-secondary-contrast);}.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;}#elProfileTabs_content{scroll-margin-top:4.5em;}
|
||||
@@ -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
|
||||
*{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
|
||||
@@ -1 +1 @@
|
||||
@media (max-width:1150px){.cTopicOverview{flex-direction:column;}}.cTopicOverview--row{background-color:var(--i-box--ba-co);background-clip:padding-box;border-radius:var(--i-box--bo-ra);border:1px solid color-mix(in srgb, var(--i-co) 10%, transparent);overflow:hidden;margin:.5em;}.cTopicOverview__toggle{display:block;padding:.5em;transition:0.1s all ease-in-out;}.cTopicOverview__toggle i[class*=" fa-"]{display:grid;place-content:center;height:100%;max-height:80px;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);}.cTopicOverview__toggle--row{display:none;}.cTopicOverview__dataItemInner{text-overflow:ellipsis;overflow:hidden;line-height:1.2;}.cTopicOverview__preview{position:relative;overflow:hidden;min-height:90px;}.cTopicOverview__preview::after{content:'';pointer-events:none;display:block;position:absolute;inset-inline-end:0;top:0;bottom:0;background-image:linear-gradient(to right, color-mix(in srgb, var(--i-box--ba-co) 0%, transparent) 0%, var(--i-box--ba-co) 100%);width:250px;}.cTopicOverview__preview .ipsUserPhoto--tiny{max-width:28px;}.cTopicOverview__previewInner{position:absolute;inset:0;}@media screen and (max-width:1150px){.cTopicOverview{flex-direction:column;}.cTopicOverview__preview, .cTopicOverview__toggle--afterStats{display:none;}.cTopicOverview__toggle--row{display:block;}}.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;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);}
|
||||
@@ -1,4 +1,4 @@
|
||||
ips.templates.set('blog.view.addButton',"<button type=\"button\" class=\"ipsButton ipsButton--primary ipsHide\" data-action=\"addNew\">{{#lang}}manage_cats_new_row{{/lang}}</button>");ips.templates.set('blog.view.categoryRow',"<li class=\"ipsData__item\" itemprop=\"itemListElement\" data-category-id=\"{{cat}}\"> <span data-role=\"sortHandle\" class=\"i-cursor_move\"><i class=\"fa-solid fa-bars\"></i></span> <div class=\"ipsData__main i-flex i-gap_1\"> <span class=\"ipsData__title\" data-role=\"title_{{cat}}\">{{name}}</span> <input type=\"text\" name=\"blog_name_{{cat}}\" value=\"\" data-role=\"input_{{cat}}\" class=\"ipsHide\"> <a href=\"#\" data-role=\"saveChanges\" data-category-id=\"{{cat}}\" class=\"ipsHide i-flex_00 ipsButton ipsButton--positive\" data-ipstooltip=\"\" title=\"{{#lang}}save{{/lang}}\">{{#lang}}save{{/lang}}</a> <a href=\"#\" data-role=\"cancelChanges\" data-category-id=\"{{cat}}\" class=\"ipsHide i-flex_00 ipsButton ipsButton--negative\" data-ipstooltip=\"\" title=\"{{#lang}}cancel{{/lang}}\">{{#lang}}cancel{{/lang}}</a> </div> <div class=\"cBlog_manage_edit ipsButtonGroup ipsButton--soft\"> <a href=\"#\" data-action=\"delete\" data-category-id=\"{{cat}}\" class=\"ipsButtonGroup__button\" data-ipstooltip title=\"{{#lang}}delete{{/lang}}\"><i class=\"fa-solid fa-circle-xmark\"></i></a> <a href=\"#\" data-action=\"edit\" data-category-id=\"{{cat}}\" class=\"ipsButtonGroup__button\" data-ipstooltip title=\"{{#lang}}edit{{/lang}}\"><i class\=\"fa-solid fa-pencil\"></i></a> </div></li>");;
|
||||
ips.templates.set('blog.view.addButton',"<button type=\"button\" class=\"ipsButton ipsButton--primary ipsHide\" data-action=\"addNew\">{{#lang}}manage_cats_new_row{{/lang}}</button>");ips.templates.set('blog.view.categoryRow',"<li class=\"ipsData__item\" itemprop=\"itemListElement\" data-category-id=\"{{cat}}\"> <span data-role=\"sortHandle\" class=\"i-cursor_move\"><i class=\"fa-solid fa-bars\"></i></span> <div class=\"ipsData__main i-flex i-gap_1\"> <span class=\"ipsData__title\" data-role=\"title_{{cat}}\">{{name}}</span> <input type=\"text\" name=\"blog_name_{{cat}}\" value=\"\" data-role=\"input_{{cat}}\" class=\"ipsHide\"> <a href=\"#\" data-role=\"saveChanges\" data-category-id=\"{{cat}}\" class=\"ipsHide i-flex_00 ipsButton ipsButton--positive\" data-ipstooltip=\"\" title=\"{{#lang}}save{{/lang}}\">{{#lang}}save{{/lang}}</a> <a href=\"#\" data-role=\"cancelChanges\" data-category-id=\"{{cat}}\" class=\"ipsHide i-flex_00 ipsButton ipsButton--negative\" data-ipstooltip=\"\" title=\"{{#lang}}cancel{{/lang}}\">{{#lang}}cancel{{/lang}}</a> </div> <div class=\"cBlog_manage_edit ipsButtonGroup\"> <a href=\"#\" data-action=\"delete\" data-category-id=\"{{cat}}\" class=\"ipsButton\" data-ipstooltip title=\"{{#lang}}delete{{/lang}}\"><i class=\"fa-solid fa-circle-xmark\"></i></a> <a href=\"#\" data-action=\"edit\" data-category-id=\"{{cat}}\" class=\"ipsButton\" data-ipstooltip title=\"{{#lang}}edit{{/lang}}\"><i class\=\"fa-solid fa-pencil\"></i></a> </div></li>");;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('blog.front.view.manageCategories',{_sortableElem:null,initialize:function(){this.on('click','[data-action="delete"]',this.delete);this.on('click','[data-action="edit"]',this.edit);this.on('click','[data-role="saveChanges"]',this.saveChanges);this.on('click','[data-role="cancelChanges"]',this.cancelEditing);var _this=this;$(document).on('keydown',function(e){if(e.keyCode==ips.ui.key.ESCAPE){_this.cancelEditing();}});$('.ipsTabs ul[role="tablist"] a').on('click',this.tabChange);$('.ipsForm .ipsButtons').append(ips.templates.render('blog.view.addButton'));$('[data-action="addNew"]').on('click',_.bind(this.newRow,this));this.renderList();this.setup();},setup:function(){var self=this;ips.loader.get(['core/interface/jquery/jquery-ui.js']).then(function(){self.scope.find('[data-role="tableRows"]').sortable({placeholder:'sortable-placeholder',handle:'[data-role="sortHandle"]',items:'> li',forcePlaceholderSize:true,update:function(){var data=self.scope.find('[data-role="tableRows"]').sortable('toArray',{attribute:'data-category-id'})
|
||||
var url='?app=blog&module=blogs&controller=view&do=categoriesReorder&id='+self.scope.attr('data-blog-id');ips.getAjax()(url,{data:{ajax_order:data},method:'POST'}).done(function(){ips.ui.flashMsg.show(ips.getString('entry_cat_order_saved'));}).fail(function(){window.location=url+"&ajax_order="+data+"&csrfKey="+ips.getSetting('csrfKey');});}});Debug.log("Sortable categories initialized");});if(!$('#form_tab_blog_entry_categories').length){$('button[type="submit"]').addClass('ipsHide');$('button[data-action="addNew"]').removeClass('ipsHide');}},cancelEditing:function(e){e.preventDefault();var _this=this;this.scope.find('input[type="text"][name^="blog_name_"]').each(function(i){if(!$(this).hasClass('ipsHide')){var id=$(this).attr('data-role').replace(/^input_/,'');if(id=='new'){_this.renderList();}
|
||||
else
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('cms.admin.fields.form',{currentValue:null,initialize:function(){const fieldDefaultValue=document.querySelector('#elTextarea_field_default_value')
|
||||
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 showMapActive=!!form.querySelector('select[name="field_type"] option[value="Address"]')?.selected;const mapEl=form.querySelectorAll('#field_show_map_listing,#field_show_map_display');if(mapEl&&!showMapActive){mapEl.forEach(el=>e.detail.togglesOff.add(el));}})},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,_));;
|
||||
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);});}
|
||||
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,7 +1,7 @@
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.front.modcp.report',{initialize:function(){this.on(document,'submitDialog','[data-role="warnUserDialog"]',this.dialogSubmitted);this.on('menuItemSelected',this.menuItemSelected);},menuItemSelected:function(e,data){data.originalEvent.preventDefault();var link=data.menuElem.find('[data-ipsMenuValue="'+data.selectedItemID+'"] a');var langString=(data.selectedItemID=='spamFlagButton')?ips.getString('confirmFlagAsSpammer'):ips.getString('confirmUnFlagAsSpammer');var descString=(data.selectedItemID=='spamUnFlagButton')?ips.getString('confirmUnFlagAsSpammerDesc'):'';var self=this;if(data.selectedItemID=='spamFlagButton'||data.selectedItemID=='spamUnFlagButton'){ips.ui.alert.show({type:'confirm',message:langString,subText:descString,callbacks:{ok:function(){self._startLoading();ips.getAjax()(link.attr('href'),{bypassRedirect:true}).done(function(response){self._refreshPanel();});},}});}},dialogSubmitted:function(e,data){this._startLoading();this._refreshPanel();},_startLoading:function(){this.scope.find('[data-role="authorPanel"]').css('height',this.scope.find('[data-role="authorPanel"]').height()+'px').addClass('ipsLoading').find('*').hide();},_refreshPanel:function(){var self=this;ips.getAjax()(window.location,{bypassRedirect:true}).done(function(response){self.scope.find('[data-role="authorPanel"]').css('height','auto').removeClass('ipsLoading').html(response);});}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.front.modcp.approveQueue',{initialize:function(){this.on('click','[data-action="approvalQueueAction"]',this.doConfirm);},doConfirm:function(e,data){e.preventDefault();var self=this;var action=$(e.currentTarget).attr('data-type');if(action!=='delete'){self.doAction(e,data);return;}
|
||||
var alert={type:'confirm',icon:'warn',message:ips.getString('generic_confirm'),subText:'',callbacks:{ok:function(){self.doAction(e,data);},no:function(){return;}}};ips.ui.alert.show(alert);},doAction:function(e,data){e.preventDefault();var element=$(e.target).closest('a');ips.getAjax()($(element).attr('href')+'&_fromApproval=1',{bypassRedirect:true}).done(function(){ips.getAjax()(ips.getSetting('baseURL')+'?app=core&module=modcp&controller=modcp&tab=approval&action=getCount').done(function(response){$('#elModCPApprovalCount').html(response.count);$(element).parents('.ipsApprovalQueueItem, .ipsData__item').slideUp("slow").remove();}).fail(function(failresponse){window.location=ips.getSetting('baseURL')+'?app=core&module=modcp&controller=modcp&tab=approval';});}).fail(function(){window.location=$(e.currentTarget).attr('href');});}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.front.modcp.reportToggle',{initialize:function(){this.on('menuItemSelected',this.reportToggled);},reportToggled:function(e,data){var item=data.menuElem.find('[data-ipsmenuvalue="'+data.selectedItemID+'"]');var icon=item.find('[data-role="ipsMenu_selectedIcon"]').attr('class');var status=item.find('[data-role="ipsMenu_selectedText"]').text();this.scope.find('[data-role="reportIcon"]').get(0).className=icon;this.scope.find('[data-role="reportStatus"]').text(status);ips.ui.flashMsg.show(ips.getString('reportStatusChanged'));}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.front.modcp.reportToggle',{initialize:function(){this.on('click','[data-action="_ipsMenu_ping"]',this.reportToggleClicked);},reportToggleClicked:function(e){e.preventDefault();var elem=$(e.currentTarget);var self=this;var menuButton=this.scope.find('[data-action="menubutton"]');var reportId=this.scope.find('[data-reportId]').attr('data-reportId');var newStatus=$(elem).closest('li.ipsMenu_item').attr('data-ipsMenuValue');var newStatusText=$(elem).find('[data-role="ipsMenu_selectedText"]').text();if($(elem).attr('data-showconfirm')!==undefined){if($(elem).attr('data-hasNotifications')==1){var dialogRef=ips.ui.dialog.create({title:ips.getString('report_status_change_confirm',{newstatus:newStatusText}),size:'narrow',url:'?app=core&module=modcp&controller=modcp&tab=reports&action=reportCenterConfirmModal&id='+reportId+'&status='+newStatus,forceReload:true});dialogRef.show();}else{ips.ui.alert.show({type:'confirm',title:ips.getString('report_status_change_confirm',{newstatus:newStatusText}),icon:'fa fa-question-circle',buttons:{ok:ips.getString('ok'),cancel:ips.getString('cancel')},callbacks:{ok:function(){menuButton.addClass('ipsLoading ipsLoading_small');menuButton.find('span').html(' ');$(elem).attr('data-action','ipsMenu_ping').trigger('click');},}});}}else{menuButton.addClass('ipsLoading ipsLoading_small');menuButton.find('span').html(' ');$(elem).attr('data-action','ipsMenu_ping').trigger('click');}}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('core.front.modcp.warnForm',{pointsEdited:false,expirationEdited:false,editorSetTo:'',initialize:function(){var self=this;this.on('change','[name="warn_reason"]',this.changeReason);this.on('change','[name="warn_points"]',this.changePoints);this.on('change','[name="warn_remove"],[name="warn_remove_time"]',function(e){self.expirationEdited=true;});this.on('editorWidgetInitialized',this.editorInitialized);},editorInitialized:function(e,data){if(data.id=='warn_member_note'){$('[name="warn_reason"]').change();const editor=ips.ui.editorv5.getObj($('textarea[name="warn_member_note"]').closest('[data-ipsEditorv5]'));this.editorSetTo=editor.getInstance().getHTML();}},changeReason:function(e){var scope=this.scope;var self=this;ips.getAjax()(ips.getSetting('baseURL')+'index.php?app=core&module=system&controller=warnings&do=reasonAjax&id='+$(e.target).val()).done(function(response){if(self.pointsEdited==false||response.points_override==0){var pointsNow=scope.find('[name="warn_points"]').val();scope.find('[name="warn_points"]').val(response.points).prop('disabled',response.points_override==0);if(pointsNow!=response.points){scope.find('[name="warn_points"]').change();}
|
||||
self.pointsEdited=false;}
|
||||
var removePointsUnlimited=scope.find('[name="warn_remove_unlimited"]');if(response.remove.unlimited){if(self.expirationEdited==false||response.remove_override==0){if(removePointsUnlimited.prop('checked')==false){if(removePointsUnlimited.prop('disabled')==true){removePointsUnlimited.prop('disabled',false).click().prop('disabled',true);}else{removePointsUnlimited.click();}}}}else if(self.expirationEdited==false||response.remove_override==0){removePointsUnlimited.prop('checked',false);scope.find('[name="warn_remove"]').val(response.remove.date).prop('disabled',response.remove_override==0);scope.find('[name="warn_remove_time"]').val(response.remove.time).prop('disabled',response.remove_override==0);}
|
||||
|
||||
@@ -54,7 +54,7 @@ if(state.data.action==='saveForm'||state.data.action==='updateForm'){this.trigge
|
||||
const data=_.extend({view:this._currentView},state.data.filterData);switch(state.data.action){case'updateForm':data.updateOnly=1
|
||||
break;case'saveForm':data.form='save'
|
||||
break;}
|
||||
this._loadResults(data).done((response)=>{this.triggerOn('core.front.streams.results','updateResults.stream',{append:false,response});if(state.data.action==='saveForm'){ips.setSetting('stream_config',JSON.parse(response.config));ips.utils.history.replaceState({controller:'core.front.streams.main',url:ips.getSetting('stream_config')['url'],skipUpdate:true},'core.front.streams.main',ips.getSetting('stream_config').url);}})}else if(state.data.action==='loadMore'){const data=_.extend({before:state.data.before,view:this._currentView},state.data.filters);const before=this.scope.find('[data-role="activityItem"]').last().attr('data-timestamp');this._loadResults(data).done((response)=>{const content=$('<div>'+response.results+'</div>');const latest=parseInt(content.find('[data-role="activityItem"]').last().attr('data-timestamp'))-1;ips.utils.history.replaceState({controller:'core.front.streams.main',latest:latest},'core.front.streams.main',this._buildRequestURL({before:before,latest:isNaN(latest)?0:latest}));this.triggerOn('core.front.streams.results','updateResults.stream',{append:true,response:response,url:this._buildRequestURL({before:before,latest:isNaN(latest)?0:latest})});});}else if(state.data.action==='viewToggle'){this._setViewType(state.data.view);this._loadResults({view:state.data.view,...state.data.filters}).done(response=>this.triggerOn('core.front.streams.results','updateResults.stream',{response}));}else{Debug.log('skip update');}},loadMoreResults(e,data){e.preventDefault();var timestamp=this.scope.find('[data-role="activityItem"]').last().attr('data-timestamp');var url=this._buildRequestURL({before:timestamp});this.scope.find('[data-role="loadMoreContainer"] [data-action="loadMore"]').addClass('ipsButton--disabled').text(ips.getString('loading'));ips.utils.history.pushState({controller:'core.front.streams.main',before:timestamp,filters:this._getUrlDiff(this._formData),action:'loadMore'},'streams',url);},_setViewType(type){this._currentView=type;this.scope.find('[data-action="switchView"]').removeClass('ipsButtonGroup__button--active').filter('[data-view="'+type+'"]').addClass('ipsButtonGroup__button--active');ips.utils.cookie.set('stream_view_'+this._streamID,type,true);},switchView(e){e.preventDefault();const view=$(e.currentTarget).attr('data-view');ips.utils.history.pushState({controller:'core.front.streams.main',view,filters:this._getUrlDiff(this._formData),action:'viewToggle'},'streams',this._buildRequestURL({view}));},formSubmitted(e,data){this._formData=this._getFormData(data.data);const url=this._buildRequestURL();ips.utils.history.pushState({controller:'core.front.streams.main',url:url,filterData:this._formData,action:data.action},'streams',url);},initialFormData(e,data){this._formData=this._getFormData(data.data);},latestTimestamp(e,data){this._timestamp=data.timestamp;},windowVisibilityChange(){var hiddenProp=ips.utils.events.getVisibilityProp();if(!_.isUndefined(hiddenProp)){if(document[hiddenProp]){this._windowFocus=false;this._startTimer(this._longInterval);this._killTimer=setTimeout(_.bind(this._stopPolling,this),this._killUpdate*60*1000);Debug.log("Set the kill timer");}else{this._windowFocus=true;this._startTimer(this._shortInterval);this._updateTitle(0);clearTimeout(this._killTimer);Debug.log("Cleared the kill timer");}}else{this._startTimer(this._longInterval);}},_loadResults(data,resetConfig,silent){var self=this;var promise=$.Deferred();if(!silent){this._setStreamLoading(true);}
|
||||
this._loadResults(data).done((response)=>{this.triggerOn('core.front.streams.results','updateResults.stream',{append:false,response});if(state.data.action==='saveForm'){ips.setSetting('stream_config',JSON.parse(response.config));ips.utils.history.replaceState({controller:'core.front.streams.main',url:ips.getSetting('stream_config')['url'],skipUpdate:true},'core.front.streams.main',ips.getSetting('stream_config').url);}})}else if(state.data.action==='loadMore'){const data=_.extend({before:state.data.before,view:this._currentView},state.data.filters);const before=this.scope.find('[data-role="activityItem"]').last().attr('data-timestamp');this._loadResults(data).done((response)=>{const content=$('<div>'+response.results+'</div>');const latest=parseInt(content.find('[data-role="activityItem"]').last().attr('data-timestamp'))-1;ips.utils.history.replaceState({controller:'core.front.streams.main',latest:latest},'core.front.streams.main',this._buildRequestURL({before:before,latest:isNaN(latest)?0:latest}));this.triggerOn('core.front.streams.results','updateResults.stream',{append:true,response:response,url:this._buildRequestURL({before:before,latest:isNaN(latest)?0:latest})});});}else if(state.data.action==='viewToggle'){this._setViewType(state.data.view);this._loadResults({view:state.data.view,...state.data.filters}).done(response=>this.triggerOn('core.front.streams.results','updateResults.stream',{response}));}else{Debug.log('skip update');}},loadMoreResults(e,data){e.preventDefault();var timestamp=this.scope.find('[data-role="activityItem"]').last().attr('data-timestamp');var url=this._buildRequestURL({before:timestamp});this.scope.find('[data-role="loadMoreContainer"] [data-action="loadMore"]').addClass('ipsButton--disabled').text(ips.getString('loading'));ips.utils.history.pushState({controller:'core.front.streams.main',before:timestamp,filters:this._getUrlDiff(this._formData),action:'loadMore'},'streams',url);},_setViewType(type){this._currentView=type;this.scope.find('[data-action="switchView"]').removeClass('ipsButton--active').filter('[data-view="'+type+'"]').addClass('ipsButton--active');ips.utils.cookie.set('stream_view_'+this._streamID,type,true);},switchView(e){e.preventDefault();const view=$(e.currentTarget).attr('data-view');ips.utils.history.pushState({controller:'core.front.streams.main',view,filters:this._getUrlDiff(this._formData),action:'viewToggle'},'streams',this._buildRequestURL({view}));},formSubmitted(e,data){this._formData=this._getFormData(data.data);const url=this._buildRequestURL();ips.utils.history.pushState({controller:'core.front.streams.main',url:url,filterData:this._formData,action:data.action},'streams',url);},initialFormData(e,data){this._formData=this._getFormData(data.data);},latestTimestamp(e,data){this._timestamp=data.timestamp;},windowVisibilityChange(){var hiddenProp=ips.utils.events.getVisibilityProp();if(!_.isUndefined(hiddenProp)){if(document[hiddenProp]){this._windowFocus=false;this._startTimer(this._longInterval);this._killTimer=setTimeout(_.bind(this._stopPolling,this),this._killUpdate*60*1000);Debug.log("Set the kill timer");}else{this._windowFocus=true;this._startTimer(this._shortInterval);this._updateTitle(0);clearTimeout(this._killTimer);Debug.log("Cleared the kill timer");}}else{this._startTimer(this._longInterval);}},_loadResults(data,resetConfig,silent){var self=this;var promise=$.Deferred();if(!silent){this._setStreamLoading(true);}
|
||||
ips.getAjax()(ips.getSetting('stream_config')['url'],{type:'post',data:data||{}}).done(function(response){if(!silent){self._setStreamLoading(false);self._updateStreamUI(response);}
|
||||
promise.resolve(response);}).fail(function(response){if(!silent){ips.ui.alert.show({type:'alert',message:ips.getString('errorLoadingStream'),icon:'warn'});}
|
||||
promise.reject();});return promise;},resultsUpdated:function(e,data){if(this.scope.find('[data-role="activityItem"]').length===0){this.scope.find('[data-role="loadMoreContainer"]').hide();this.scope.find('[data-role="streamContent"]').removeClass('ipsStream_withTimeline');}
|
||||
|
||||
@@ -72,8 +72,7 @@ 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);}
|
||||
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()
|
||||
e.dataTransfer.setData('application/x.ipsblock',JSON.stringify({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,}))})},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')}})
|
||||
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')}})
|
||||
this._loadedManager=true;this.scope.find('[data-role="availableBlocks"]').html(response);this._setUpDragging();this.setupSearch();this.setupFavorites();try{$(document).trigger('contentChange',[$('#elSidebarManager')]);}catch(e){Debug.error(e);}
|
||||
document.dispatchEvent(new CustomEvent('ipsWidgetManagerLoaded',{bubbles:true,cancelable:true}))}catch(e){Debug.error(e)
|
||||
ips.ui.alert.show({type:'alert',icon:'warn',message:ips.getString('sidebar_fetch_blocks_error'),callbacks:{}});}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('forums.front.topic.activity',{initialize:function(){this.on('click','[data-action="toggleOverview"]',this.toggleOverview);},toggleOverview:function(e){e.preventDefault();if(this.scope.hasClass('cTopicOverview--expanded')){this.scope.find('[data-role="preview"]').removeClass('ipsHide');this.scope.find('[data-role="overview"]').addClass('ipsHide');this.scope.removeClass('cTopicOverview--expanded');}else{this.scope.find('[data-role="preview"]').addClass('ipsHide');this.scope.find('[data-role="overview"]').removeClass('ipsHide');this.scope.addClass('cTopicOverview--expanded');}}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('forums.front.topic.activity',{initialize:function(){this.on('click','[data-action="toggleOverview"]',this.toggleOverview);},toggleOverview:function(e){this.scope.toggleClass('cTopicOverview--expanded');}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";ips.controller.register('forums.front.topic.answers',{ajaxObj:null,initialize:function(){this.on('click','a.cAnswerRate',this.rate);},rate:function(e){e.preventDefault();var self=this;var clicked=$(e.currentTarget);if(this.scope.find('.cAnswerRate_up').is('.i-color_positive')){var currentVote='positive';}
|
||||
else if(this.scope.find('.cAnswerRate_down').is('.i-color_negative')){var currentVote='negative';}
|
||||
else{var currentVote=false;}
|
||||
|
||||
@@ -63,7 +63,7 @@ else if(this.storedValues.dates.start){this.scope.find('[data-role="dateSummary"
|
||||
else if(this.storedValues.dates.end){this.scope.find('[data-role="dateSummary"]').text('('+ips.getString('beforeX',{end:ips.utils.time.localeDateString(ips.utils.time.removeTimezone(new Date(this.storedValues.dates.end)))})+')');}
|
||||
else
|
||||
{this.scope.find('[data-role="dateSummary"]').text('');}
|
||||
this._updateURL();},_toggleButtonRow:function(e,type){e.preventDefault();var val=$(e.currentTarget).attr('data-'+type);this.scope.find('[data-'+type+']').removeClass('ipsButtonGroup__button--active').removeAttr('data-selected').filter('[data-'+type+'="'+val+'"]').addClass('ipsButtonGroup__button--active').attr('data-selected',true);this.storedValues[type]=val;this._resetFilters();this._updateURL();},_resetFilters:function(){var self=this;this.storedValues.filters=[];$('#el'+this.identifier+'Filter_menu').find('.ipsMenu_itemChecked').each(function(){self.storedValues.filters.push($(this).attr('data-ipsMenuValue'));});},_skipUpdate:false,_updateURL:function(){if(this._skipUpdate===true){this._skipUpdate=false;return;}
|
||||
this._updateURL();},_toggleButtonRow:function(e,type){e.preventDefault();var val=$(e.currentTarget).attr('data-'+type);this.scope.find('[data-'+type+']').removeClass('ipsButton--active').removeAttr('data-selected').filter('[data-'+type+'="'+val+'"]').addClass('ipsButton--active').attr('data-selected',true);this.storedValues[type]=val;this._resetFilters();this._updateURL();},_resetFilters:function(){var self=this;this.storedValues.filters=[];$('#el'+this.identifier+'Filter_menu').find('.ipsMenu_itemChecked').each(function(){self.storedValues.filters.push($(this).attr('data-ipsMenuValue'));});},_skipUpdate:false,_updateURL:function(){if(this._skipUpdate===true){this._skipUpdate=false;return;}
|
||||
var url=this._buildURL();var chartArea=this.scope.find('[data-role="chart"]');chartArea.css('height',chartArea.height()).html('').addClass('ipsLoading');ips.getAjax()(this.scope.attr('data-chart-url'),{data:url,type:'post'}).done(function(response){chartArea.css('height','auto').html(response);$(document).trigger('contentChange',[chartArea]);}).always(function(){chartArea.removeClass('ipsLoading');});$('button[data-role="applyFilters"]').prop('disabled',true);this.scope.find('[data-role="downloadChart"]').attr('href',this.scope.attr('data-chart-url')+'&'+url+'&download=1');},_buildURL:function(){var pieces=[];var self=this;pieces.push("noheader=1");pieces.push("timescale["+this.identifier+"]="+this.storedValues.timescale);if(!_.isUndefined(this.storedValues.type)){pieces.push("type["+this.identifier+"]="+this.storedValues.type);}
|
||||
if(!_.isUndefined(this.storedValues.term)&&!_.isNull(this.storedValues.term)){pieces.push("search["+this.identifier+"]="+this.storedValues.term);}
|
||||
_.each(this.storedValues.filters,function(value,idx){pieces.push("filters["+self.identifier+"]["+idx+"]="+value);});if(this.storedValues.dates.start||this.storedValues.dates.end){pieces.push("start["+this.identifier+"]="+this.storedValues.dates.start);pieces.push("end["+this.identifier+"]="+this.storedValues.dates.end);}
|
||||
|
||||
@@ -3,7 +3,7 @@ ips.templates.set('core.tooltip'," <div id='{{id}}' class='ipsTooltip' role='to
|
||||
<div class='ipsPixabayThumb' {{#width}}{{#height}}style="--i-ratio: {{width}} / {{height}}"{{/height}}{{/width}}>
|
||||
<img loading="lazy" {{#width}}width='{{width}}'{{/width}} {{#height}}height='{{height}}'{{/height}} src="{{thumb}}" class="ipsPixabayImage" data-url="{{url}}" data-id="{{imgid}}" alt="">
|
||||
</div>
|
||||
`);ips.templates.set('core.editor.emoticons'," <div class='ipsMenu ipsMenu_wide' id='{{id}}_menu' style='display: none' data-editorID='{{editor}}' data-controller='core.global.editor.emoticons'> <div class='ipsMenu_headerBar'> <h4 class='ipsTitle ipsTitle--h4'>{{#lang}}emoji{{/lang}}</h4> <div class='i-flex i-gap_2'> <a href='#' class='i-color_inherit ipsHide' data-role='skinToneMenu' data-ipsMenu data-ipsMenu-appendTo='#{{id}}_menu' id='{{id}}_tones'>{{#lang}}emoji_skin_tone{{/lang}} <i class='fa-solid fa-caret-down'></i></a> <a href='#' class='i-color_inherit ipsHide' data-role='categoryTrigger' data-ipsMenu data-ipsMenu-appendTo='#{{id}}_menu' id='{{id}}_more'>{{#lang}}emoticonCategories{{/lang}} <i class='fa-solid fa-caret-down'></i></a> </div> <ul class='ipsMenu ipsMenu_veryNarrow i-cursor_pointer' id='{{id}}_tones_menu' role='menu' style='display: none'> <li class='ipsMenu_title'>{{#lang}}emoji_skin_tone{{/lang}}</li> <li class='ipsMenu_item' role='menuitem' data-ipsMenuValue='none'><a>{{#lang}}emoji_skin_tone_default{{/lang}}</a></li> <li class='ipsMenu_sep'><hr></li> <li class='ipsMenu_item' role='menuitem' data-ipsMenuValue='light'><a>\uD83C\uDFFB {{#lang}}emoji_skin_tone_light{{/lang}}</a></li> <li class='ipsMenu_item' role='menuitem' data-ipsMenuValue='medium-light'><a>\uD83C\uDFFC {{#lang}}emoji_skin_tone_medium_light{{/lang}}</a></li> <li class='ipsMenu_item' role='menuitem' data-ipsMenuValue='medium'><a>\uD83C\uDFFD {{#lang}}emoji_skin_tone_medium{{/lang}}</a></li> <li class='ipsMenu_item' role='menuitem' data-ipsMenuValue='medium-dark'><a>\uD83C\uDFFE {{#lang}}emoji_skin_tone_medium_dark{{/lang}}</a></li> <li class='ipsMenu_item' role='menuitem' data-ipsMenuValue='dark'><a>\uD83C\uDFFF {{#lang}}emoji_skin_tone_dark{{/lang}}</a></li> </ul> <ul data-role='categoryMenu' class='ipsMenu ipsMenu_auto i-cursor_pointer' id='{{id}}_more_menu' role='menu' style='display: none'> </ul> </div> <div class='ipsMenu_innerContent'> <div class='ipsEmoticons_content'> <div class='ipsEmpty ipsEmoticons_contentLoading' data-role='emojiLoading'> {{#lang}}loading{{/lang}}... </div> </div> </div> <div class='ipsMenu_footerBar'> <input type='text' data-role='emoticonSearch' class='ipsInput ipsInput--wide' placeholder='{{#lang}}emoticonFind{{/lang}}'> </div></div>");ips.templates.set('core.editor.emoticonSection'," <div data-panel='{{id}}'>{{{content}}}</div>");ips.templates.set('core.editor.emoticonMenu'," <li class='ipsMenu_item' role='menuitem' data-ipsMenuValue='{{categoryID}}'><a><span class='ipsMenu_itemCount'>{{count}}</span>{{title}}</a></li>");ips.templates.set('core.editor.emoticonCategory'," <div class='i-background_2 i-padding_2'><strong>{{title}}</strong></div> <div class='ipsEmoticons_category' data-categoryid='{{categoryID}}'>{{{emoticons}}}</div>");ips.templates.set('core.editor.emoticonSearch'," <div class='ipsEmoticons_category'>{{{emoticons}}}</div>");ips.templates.set('core.editor.emoticonRow'," <div class='ipsEmoticons_row ipsEmoji'>{{{emoticons}}}</div>");ips.templates.set('core.editor.emoticonItem'," <div class='ipsEmoticons_item' data-emoticon='{{tag}}' src='{{src}}' data-height='{{height}}' data-width='{{width}}' title='{{tag}}' loading='lazy'>{{{img}}}</div>");ips.templates.set('core.editor.emoji'," <div class='ipsEmoticons_item' title='{{name}}' data-emoji='{{code}}'>{{{display}}}</div>");ips.templates.set('core.editor.emojiNotNative'," <div class='ipsEmoticons_item' title='{{name}}' data-emoji='{{code}}'>{{{img}}}</div>");ips.templates.set('core.editor.emoticonBlank'," <div class='ipsEmoticons_item'> </div>");ips.templates.set('core.editor.emoticonNoResults'," <div class='i-padding_3 i-text-align_center i-color_soft'>{{#lang}}no_results{{/lang}}</div>");ips.templates.set('core.editor.emojiResult'," <li class='ipsMenu_item i-cursor_pointer' title='{{name}}' data-emoji='{{code}}'> <a><span class='ipsEmoji_result'>{{{emoji}}}</span> <span data-role='shortCode'>{{short_code}}</span></a> </li>");ips.templates.set('core.editor.quote',"<blockquote class='ipsQuote' data-ipsQuote data-gramm='false' cite='{{citeurl}}'><div class='ipsQuote_citation'>{{citation}}</div><div class='ipsQuote_contents ipsClearfix' data-gramm='false'>{{{contents}}}</div></blockquote>");ips.templates.set('core.editor.legacyQuoteUpcast',"<div class='ipsQuote_citation'>{{citation}}</div><div class='ipsQuote_contents ipsClearfix' data-gramm='false'>{{{contents}}}</div>");ips.templates.set('core.editor.citation'," <div class='ipsQuote_citation ipsQuote_open'> <a href='#' data-action='toggleQuote' aria-label='{{#lang}}toggle_quote{{/lang}}'> </a> {{#contenturl}} <a href='{{contenturl}}' class='ipsQuote_citation-origin'><i class='fa-solid fa-share'></i></a> {{/contenturl}} {{{citation}}} </div>");ips.templates.set('core.editor.citationLink'," <a href='{{baseURL}}?app=core&module=members&controller=profile&id={{userid}}' data-ipsHover data-ipshover-target='{{baseUR
Line truncated
|
||||
`);ips.templates.set('core.editor.emoticons'," <div class='ipsMenu ipsMenu_wide' id='{{id}}_menu' style='display: none' data-editorID='{{editor}}' data-controller='core.global.editor.emoticons'> <div class='ipsMenu_headerBar'> <h4 class='ipsTitle ipsTitle--h4'>{{#lang}}emoji{{/lang}}</h4> <div class='i-flex i-gap_2'> <a href='#' class='i-color_inherit ipsHide' data-role='skinToneMenu' data-ipsMenu data-ipsMenu-appendTo='#{{id}}_menu' id='{{id}}_tones'>{{#lang}}emoji_skin_tone{{/lang}} <i class='fa-solid fa-caret-down'></i></a> <a href='#' class='i-color_inherit ipsHide' data-role='categoryTrigger' data-ipsMenu data-ipsMenu-appendTo='#{{id}}_menu' id='{{id}}_more'>{{#lang}}emoticonCategories{{/lang}} <i class='fa-solid fa-caret-down'></i></a> </div> <ul class='ipsMenu ipsMenu_veryNarrow i-cursor_pointer' id='{{id}}_tones_menu' role='menu' style='display: none'> <li class='ipsMenu_title'>{{#lang}}emoji_skin_tone{{/lang}}</li> <li class='ipsMenu_item' role='menuitem' data-ipsMenuValue='none'><a>{{#lang}}emoji_skin_tone_default{{/lang}}</a></li> <li class='ipsMenu_sep'><hr></li> <li class='ipsMenu_item' role='menuitem' data-ipsMenuValue='light'><a>\uD83C\uDFFB {{#lang}}emoji_skin_tone_light{{/lang}}</a></li> <li class='ipsMenu_item' role='menuitem' data-ipsMenuValue='medium-light'><a>\uD83C\uDFFC {{#lang}}emoji_skin_tone_medium_light{{/lang}}</a></li> <li class='ipsMenu_item' role='menuitem' data-ipsMenuValue='medium'><a>\uD83C\uDFFD {{#lang}}emoji_skin_tone_medium{{/lang}}</a></li> <li class='ipsMenu_item' role='menuitem' data-ipsMenuValue='medium-dark'><a>\uD83C\uDFFE {{#lang}}emoji_skin_tone_medium_dark{{/lang}}</a></li> <li class='ipsMenu_item' role='menuitem' data-ipsMenuValue='dark'><a>\uD83C\uDFFF {{#lang}}emoji_skin_tone_dark{{/lang}}</a></li> </ul> <ul data-role='categoryMenu' class='ipsMenu ipsMenu_auto i-cursor_pointer' id='{{id}}_more_menu' role='menu' style='display: none'> </ul> </div> <div class='ipsMenu_innerContent'> <div class='ipsEmoticons_content'> <div class='ipsEmpty ipsEmoticons_contentLoading' data-role='emojiLoading'> {{#lang}}loading{{/lang}}... </div> </div> </div> <div class='ipsMenu_footerBar'> <input type='text' data-role='emoticonSearch' class='ipsInput ipsInput--wide' placeholder='{{#lang}}emoticonFind{{/lang}}'> </div></div>");ips.templates.set('core.editor.emoticonSection'," <div data-panel='{{id}}'>{{{content}}}</div>");ips.templates.set('core.editor.emoticonMenu'," <li class='ipsMenu_item' role='menuitem' data-ipsMenuValue='{{categoryID}}'><a><span class='ipsMenu_itemCount'>{{count}}</span>{{title}}</a></li>");ips.templates.set('core.editor.emoticonCategory'," <div class='i-background_2 i-padding_2'><strong>{{title}}</strong></div> <div class='ipsEmoticons_category' data-categoryid='{{categoryID}}'>{{{emoticons}}}</div>");ips.templates.set('core.editor.emoticonSearch'," <div class='ipsEmoticons_category'>{{{emoticons}}}</div>");ips.templates.set('core.editor.emoticonRow'," <div class='ipsEmoticons_row ipsEmoji'>{{{emoticons}}}</div>");ips.templates.set('core.editor.emoticonItem'," <div class='ipsEmoticons_item' data-emoticon='{{tag}}' src='{{src}}' data-height='{{height}}' data-width='{{width}}' title='{{tag}}' loading='lazy'>{{{img}}}</div>");ips.templates.set('core.editor.emoji'," <div class='ipsEmoticons_item' title='{{name}}' data-emoji='{{code}}'>{{{display}}}</div>");ips.templates.set('core.editor.emojiNotNative'," <div class='ipsEmoticons_item' title='{{name}}' data-emoji='{{code}}'>{{{img}}}</div>");ips.templates.set('core.editor.emoticonBlank'," <div class='ipsEmoticons_item'> </div>");ips.templates.set('core.editor.emoticonNoResults'," <div class='i-padding_3 i-text-align_center i-color_soft'>{{#lang}}no_results{{/lang}}</div>");ips.templates.set('core.editor.emojiResult'," <li class='ipsMenu_item i-cursor_pointer' title='{{name}}' data-emoji='{{code}}'> <a><span class='ipsEmoji_result'>{{{emoji}}}</span> <span data-role='shortCode'>{{short_code}}</span></a> </li>");ips.templates.set('core.editor.quote',"<blockquote class='ipsQuote' data-ipsQuote data-gramm='false' cite='{{citeurl}}'><div class='ipsQuote_citation'>{{{citation}}}</div><div class='ipsQuote_contents ipsClearfix' data-gramm='false'>{{{contents}}}</div></blockquote>");ips.templates.set('core.editor.legacyQuoteUpcast',"<div class='ipsQuote_citation'>{{citation}}</div><div class='ipsQuote_contents ipsClearfix' data-gramm='false'>{{{contents}}}</div>");ips.templates.set('core.editor.citation'," <div class='ipsQuote_citation ipsQuote_open'> <a href='#' data-action='toggleQuote' aria-label='{{#lang}}toggle_quote{{/lang}}'> </a> {{#contenturl}} <a href='{{contenturl}}' class='ipsQuote_citation-origin'><i class='fa-solid fa-share'></i></a> {{/contenturl}} {{{citation}}} </div>");ips.templates.set('core.editor.citationLink'," <a href='{{baseURL}}?app=core&module=members&controller=profile&id={{userid}}' data-ipsHover data-ipshover-target='{{base
Line truncated
|
||||
ips.templates.set('core.rating.star'," <li class='{{className}}' data-ratingValue='{{value}}'><a href='#'><i class='fa-solid fa-star'></i></a></li>");ips.templates.set('core.rating.halfStar'," <li class='ipsRating_half' data-ratingValue='{{value}}'><i class='fa-solid fa-star-half'></i><i class='fa-solid fa-star-half fa-flip-horizontal'></i></li>");ips.templates.set('core.rating.loading'," <i class='ipsLoadingIcon'></span>");ips.templates.set('core.sidebar.managerWrapper',`\
|
||||
<div id='elSidebarManager' data-role='manager' class='ipsToolbox' hidden>
|
||||
<div class='ipsToolbox__tools'>
|
||||
@@ -50,7 +50,7 @@ ips.templates.set('core.rating.star'," <li class='{{className}}' data-ratingValu
|
||||
<button class="ipsIconPicker__close" data-role="close" aria-label="close" title="{{#lang}}close{{/lang}}" type="button"><i class="fa-solid fa-xmark"></i></button>
|
||||
</div>
|
||||
<div class="ipsIconPicker__search">
|
||||
<input type="text" name="icon_picker_search_box" data-role="search" placeholder="Search for an icon" class='ipsInput'>
|
||||
<input type="text" name="icon_picker_search_box" data-role="search" placeholder="{{#lang}}iconpicker_prompt{{/lang}}" class='ipsInput'>
|
||||
{{#allowedTypes}}
|
||||
<div data-role="type_selectors">
|
||||
{{#typeOptions}}
|
||||
@@ -1889,6 +1889,17 @@ elem.data('animQueue').push({animName:animName,run:toRun,args:args,deferred:defe
|
||||
var item=queue.shift();if(item.run=='anim'){elem.animationComplete(function(){elem.attr('animating',false);item.deferred.resolve();_checkQueue(elem);});elem.attr('animating',true);_transitions[item.animName][item.run].apply(this,item.args);}else{item.deferred.resolve();_transitions[item.animName][item.run].apply(this,item.args);_checkQueue(elem);}
|
||||
item.deferred.resolve();},cleanClasses=function(elem){$(elem).removeClass('ipsAnim').removeClass(function(index,css){return(css.match(/ipsAnim[0-9a-z_\-]+/gi)||[]).join(' ');});return elem;},isTransition=function(name){return!_.isUndefined(_transitions[name]);},addTransition=function(name,cssAnimation,fallbackAnimation){if(_transitions[name]){Debug.warn("A transition with the name '"+name+"' already exists");return;}
|
||||
_transitions[name]={anim:cssAnimation,fallback:fallbackAnimation};},scrollTo=function(elem,options){};return{init:init,cleanClasses:cleanClasses,animationSupport:animationSupport,isTransition:isTransition,addTransition:addTransition,go:go,cancel:cleanClasses};});}(jQuery,_));;
|
||||
;(function($,_){"use strict";ips.createModule("ips.utils.lazyload",function(){const fixedElements=new WeakSet();const imgDimsCache={_cache:new Map(),get(key){let value;if(!this._cache.has(key)){try{value=ips.utils.db.get('ips.utils.lazyloadImgDims',key);}catch(e){}}else{value=this._cache.get(key);}
|
||||
return value;},set(key,value){ips.utils.db.set('ips.utils.lazyloadImgDims',key,value,false,Math.round(Date.now()/1000)+86400);return this._cache.set(key,value);},has(key){return this._cache.has(key);},delete(key){ips.utils.db.remove('ips.utils.lazyloadImgDims',key);return this._cache.delete(key);}};return{init(){this.parseLazyLoadElements();$(document).on('contentChange',function(changedElement){try{$(changedElement).each(function(){ips.utils.lazyload.parseLazyLoadElements(this);});}catch(e){Debug.warn(`Something went wrong when processing lazy load images`);Debug.warn(e);}})},parseLazyLoadElements(root){root=root instanceof Element?root:document.body;root.querySelectorAll("[data-src]:is(img, audio, video, iframe, object, embed)").forEach(element=>{if(fixedElements.has(element)){return;}
|
||||
element.dataset.ipsLazyloadProcessed='1'
|
||||
fixedElements.add(element);if(element.getAttribute('src')===element.dataset.src){delete element.dataset.src
|
||||
return;}
|
||||
element.setAttribute('loading','lazy');element.setAttribute('src',element.dataset.src);delete element.dataset.src;if(element.matches('img')){let width=parseFloat(element.getAttribute('width')||'');let height=parseFloat(element.getAttribute('height')||'');if(width&&height&&!Number.isNaN(width)&&!Number.isNaN(height)){return;}else if(element.style.height||element.style.width){return;}else if(parseFloat(width?.toString()||element.dataset.width||'')&&parseFloat(height?.toString()||element.dataset.height||'')){width=Math.round(parseFloat(width?.toString()||element.dataset.width)*100)/100;height=Math.round(parseFloat(height?.toString()||element.dataset.height)*100)/100;}else if(parseFloat(width?.toString()||element.dataset.width||'')&&parseFloat(element.dataset.ratio||'')){width=Math.round(parseFloat(width?.toString()||element.dataset.width)*100)/100;height=Math.round((width/parseFloat(element.dataset.ratio))*100)/100;}else if(parseFloat(height?.toString()||element.dataset.height||'')&&parseFloat(element.dataset.ratio||'')){height=Math.round(parseFloat(height?.toString()||element.dataset.height)*100)/100;width=Math.round(height*parseFloat(element.dataset.ratio)*100)/100;}
|
||||
if(typeof height==="number"&&typeof width==="number"&&height>0&&width>0){Debug.log(`Determined the width and height from data- attributes`);element.setAttribute('width',width.toString());element.setAttribute('height',height.toString());}else{this.getNativeImgDims(element.getAttribute('src')).then(dims=>{if(dims){Debug.log(`Determined the width and height from the URL`);element.setAttribute('width',dims.width.toString());element.setAttribute('height',dims.height.toString());}}).catch(err=>{Debug.warn(`Failed to determine the native dims of the image at the URL ${element.getAttribute('url')}`);Debug.warn(err);})}}});},getNativeImgDims(url){return new Promise(_resolve=>{let done=false;let timeout;const resolve=val=>{if(timeout!==undefined){clearTimeout(timeout);}
|
||||
if(done){return;}
|
||||
done=true;_resolve(val);};try{let output={width:0,height:0};url=new URL(url);if(imgDimsCache.has(url.toString())){resolve(imgDimsCache.get(url.toString()));return;}
|
||||
const img=new Image();timeout=setTimeout(()=>{imgDimsCache.set(url.toString(),undefined);resolve(undefined);},3000);img.addEventListener('load',()=>{output.width=img.naturalWidth;output.height=img.naturalHeight;if(Number.isNaN(output.width)||Number.isNaN(output.height)||output.width<=0||output.height<=0){imgDimsCache.set(url.toString(),undefined);resolve(undefined);return;}
|
||||
output.height=Math.max(1,Math.round(output.height*100)/100);output.width=Math.max(1,Math.round(output.width*100)/100);imgDimsCache.set(url.toString(),output);resolve(output);});img.addEventListener('error',()=>{imgDimsCache.set(url.toString(),undefined);resolve(undefined);});img.src=url.toString();}catch(e){resolve(undefined);}});}}});})(jQuery,_);;
|
||||
;(function($,_,undefined){"use strict";ips.createModule('ips.utils.links',function(){var updateExternalLinks=function(element){if(ips.getSetting('links_external')){if(_.isUndefined(element)){return;}
|
||||
element.find('a[rel*="external"]').each(function(index,elem){elem.target="_blank";elem.rel=elem.rel.replace(" noopener","")+" noopener";});}};return{updateExternalLinks:updateExternalLinks};});}(jQuery,_));;
|
||||
;(function($,_){"use strict";ips.createModule('ips.utils.notification',function(){const supported=!!(window.Notification?.requestPermission instanceof Function&&ips.getSetting('pushPublicKey')!==null&&((parseFloat(navigator.userAgent.match(/version\/([\d\.]+).*safari/i)?.[1])||16.5)>=16.4));async function requestPermission(){if(supported)
|
||||
|
||||
@@ -32,7 +32,8 @@ for(const action of['quoteComment','multiQuoteComment','rateReview']){this.on('c
|
||||
this.on('submit','form',this.submitEdit);this.on('change','input[type="checkbox"][data-role="moderation"]',this.commentCheckbox);this.elem.addEventListener('ipsCalcQuote',()=>this.inlineQuote())
|
||||
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();},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;}
|
||||
'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;}
|
||||
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;}
|
||||
@@ -238,7 +239,7 @@ return notifyData;},_showNotification(notifyData,type){if(!document[ips.utils.ev
|
||||
if($('#elFlashMessage').is(':visible')&&$('#elFlashMessage').find('[data-role="newNotification"]').length){$('#elFlashMessage').find('[data-role="newNotification"]').replaceWith(html);}else{ips.ui.flashMsg.show(html,{timeout:8,position:'bottom',extraClasses:'cNotificationFlash',dismissable:function(){self._stopPolling();},escape:false});}},_updateTimestamp(){let storage=ips.utils.db.get('notifications',ips.getSetting('baseURL'));storage=_.extend(storage,{timestamp:ips.utils.time.timestamp()});ips.utils.db.set('notifications',ips.getSetting('baseURL'),storage);},_updateIcons(newData,oldData){const reportBadge=this.scope.find('[data-notificationType="reports"]');const reportCount=reportBadge.length?parseInt(reportBadge.text()):0;const notifyData={notifications:parseInt(newData.notifications),reports:reportCount};if(parseInt(newData.notifications)!==oldData.notifications){this._updateIcon('notify',newData.notifications);this.scope.trigger('clearUserbarCache',{type:'notify'});}
|
||||
if(this._messagesEnabled){if(parseInt(newData.messages)!==oldData.messages){this._updateIcon('inbox',newData.messages);this.scope.trigger('clearUserbarCache',{type:'inbox'});}
|
||||
notifyData.messages=parseInt(newData.messages);}},_updateIcon(type,count){const icon=this._getIcon(type);icon.attr('data-currentCount',count).text(count);if(parseInt(count)){ips.utils.anim.go((!icon.is(':visible'))?'zoomIn':'pulseOnce',icon.removeClass('ipsHide'));}else{icon.fadeOut();}},_getIcon(type){return $('body').find('[data-notificationType="'+type+'"]');},_getCurrentCounts(){const messages=this.scope.find('[data-notificationType="inbox"]');const notifications=this.scope.find('[data-notificationType="notify"]');return{notifications:parseInt(notifications.attr('data-currentCount')),messages:(messages.length)?parseInt(messages.attr('data-currentCount')):null};},_stopPolling(){Debug.info("Stopping instant notification polling");clearInterval(this._interval);this._paused=true;}});}(jQuery,_));;
|
||||
;(function($,_,undefined){"use strict";const IMAGE_EXTENSIONS=new Set(['gif','jpeg','jpe','jpg','png','svg','webp'])
|
||||
;(function($,_,undefined){"use strict";const IMAGE_EXTENSIONS=new Set(['gif','jpeg','jpe','jpg','png','svg','webp','avif'])
|
||||
ips.controller.register('core.front.core.lightboxedImages',{_random:null,initialize:function(){var self=this;this.on('initializeImages',this.refreshContent);this.on('refreshContent',this.refreshContent);this.on(document,'imageRotated',function(e,data){var attachment=$(self.scope).find('.ipsAttachLink_image img[data-fileId='+data.fileId+']');self._updateAttachmentImage(attachment,data);});this.setup();},setup:function(){this._random='g'+(Math.round(Math.random()*100000));this._initializeAttachments();this._initializeImages();},refreshContent:function(e){Debug.log("Refreshing content in lightboxedImages");this.scope.removeAttr('data-loaded');this._initializeAttachments();this._initializeImages();e.stopPropagation();},_initializeAttachments:function(){var fileIDsToFetch={};var self=this;var attachments=this.scope.find('[data-fileid]').not(function(idx,elem){var elem=$(elem);return elem.is('source, video')||elem.find('source, video').length;});if(!attachments.length){return;}
|
||||
attachments.each(function(){var attachment=$(this);if(!_.isUndefined(attachment.attr('data-loaded'))){return;}
|
||||
if(!(attachment.is('img, .ipsAttachLink_image'))){var parent=attachment.parent();var clone=parent.clone();clone.children().remove();clone.text(clone.text().replace(/\s/g,''));if(!clone.text().length&&attachment.parentsUntil(this.scope,'li').length===0){attachment.addClass('ipsAttachLink_block');if(attachment.children().length){return;}
|
||||
|
||||
@@ -2028,6 +2028,16 @@ IPSCONTENT;
|
||||
$commentCount++;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<a id="findComment-
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $comment->id, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
"></a>
|
||||
<a id="comment-
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $comment->id, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
"></a>
|
||||
{$comment->html()}
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -497,7 +497,7 @@ endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li>
|
||||
<ul class="ipsButtonGroup ipsButton--soft ipsButton--icon">
|
||||
<ul class="ipsButtonGroup">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -510,12 +510,12 @@ IPSCONTENT;
|
||||
|
||||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=calendar&module=calendar&controller=view&view=overview", null, "calendar", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" class="ipsButtonGroup__button
|
||||
" class="ipsButton
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Widget\Request::i()->view=='overview' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
ipsButtonGroup__button--active
|
||||
ipsButton--active
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
@@ -561,12 +561,12 @@ IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
" class="ipsButtonGroup__button
|
||||
" class="ipsButton
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Widget\Request::i()->view=='month' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
ipsButtonGroup__button--active
|
||||
ipsButton--active
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
@@ -606,12 +606,12 @@ IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
" class="ipsButtonGroup__button
|
||||
" class="ipsButton
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Widget\Request::i()->view=='week' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
ipsButtonGroup__button--active
|
||||
ipsButton--active
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
@@ -651,12 +651,12 @@ IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
" class="ipsButtonGroup__button
|
||||
" class="ipsButton
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Widget\Request::i()->view=='day' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
ipsButtonGroup__button--active
|
||||
ipsButton--active
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
|
||||
@@ -1586,19 +1586,19 @@ IPSCONTENT;
|
||||
if ( \IPS\Settings::i()->clubs_allow_view_change AND \IPS\Member::loggedIn()->member_id ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<ul class="ipsButtonGroup ipsButton--soft">
|
||||
<ul class="ipsButtonGroup">
|
||||
<li>
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=clubs&controller=directory&view=grid" . "&csrfKey=" . \IPS\Session::i()->csrfKey, null, "clubs_list", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" class="ipsButtonGroup__button
|
||||
" class="ipsButton
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $view == 'grid' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
ipsButtonGroup__button--active
|
||||
ipsButton--active
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
@@ -1618,12 +1618,12 @@ IPSCONTENT;
|
||||
|
||||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=clubs&controller=directory&view=list" . "&csrfKey=" . \IPS\Session::i()->csrfKey, null, "clubs_list", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" class="ipsButtonGroup__button
|
||||
" class="ipsButton
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $view == 'list' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
ipsButtonGroup__button--active
|
||||
ipsButton--active
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
@@ -3205,7 +3205,7 @@ IPSCONTENT;
|
||||
if ( $club->canInvite() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<ul class="ipsButtons ipsButtons--main ipsButtons--margin">
|
||||
<ul class="ipsButtons ipsButtons--main i-margin-block_block">
|
||||
<li>
|
||||
<a class="ipsButton ipsButton--primary" href="
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -3538,502 +3538,6 @@ IPSCONTENT;
|
||||
<li>
|
||||
<hr class='ipsHr'>
|
||||
</li>
|
||||
IPSCONTENT;
|
||||
|
||||
return $return;
|
||||
}
|
||||
|
||||
function statusPopupTemplate( $id, $action, $elements, $hiddenValues, $actionButtons, $uploadField, $class='' ) {
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<form accept-charset='utf-8' method="post" action="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $action, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" id='elStatusSubmit'
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $uploadField ):
|
||||
$return .= <<<IPSCONTENT
|
||||
enctype="multipart/form-data"
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
>
|
||||
<div class="i-padding_3">
|
||||
<input type="hidden" name="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $id, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
_submitted" value="1">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
foreach ( $hiddenValues as $k => $v ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<input type="hidden" name="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $k, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" value="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $v, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $uploadField ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<input type="hidden" name="MAX_FILE_SIZE" value="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $uploadField, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
<input type="hidden" name="plupload" value="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( md5( mt_rand() ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
foreach ( $elements as $collection ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
foreach ( $collection as $input ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $input instanceof \IPS\Helpers\Form\Editor ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
{$input->html()}
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $input->error ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<br>
|
||||
<span class="i-color_warning">
|
||||
IPSCONTENT;
|
||||
|
||||
$val = "{$input->error}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
<ul class="ipsSubmitRow ipsButtons">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
foreach ( $actionButtons as $button ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li>{$button}</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</ul>
|
||||
</form>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
return $return;
|
||||
}
|
||||
|
||||
function statusTemplate( $id, $action, $elements, $hiddenValues, $actionButtons, $uploadField, $class='' ) {
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<!-- v5 todo: This template file is no longer used, correct? -->
|
||||
<style>*{color:#9f2 !important;}</style>
|
||||
<form accept-charset='utf-8' method="post" action="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $action, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" id='elStatusSubmit'
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $uploadField ):
|
||||
$return .= <<<IPSCONTENT
|
||||
enctype="multipart/form-data"
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
>
|
||||
<input type="hidden" name="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $id, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
_submitted" value="1">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
foreach ( $hiddenValues as $k => $v ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<input type="hidden" name="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $k, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" value="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $v, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $uploadField ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<input type="hidden" name="MAX_FILE_SIZE" value="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $uploadField, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
<input type="hidden" name="plupload" value="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( md5( mt_rand() ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
foreach ( $elements as $collection ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
foreach ( $collection as $input ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $input instanceof \IPS\Helpers\Form\Editor ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
{$input->html( TRUE )}
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $input->error ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<br>
|
||||
<span class="i-color_warning">
|
||||
IPSCONTENT;
|
||||
|
||||
$val = "{$input->error}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<ul class='ipsButtons ipsButtons--end ipsButtons--statusTemplate' data-ipsEditor-toolList>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
foreach ( $elements as $collection ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
foreach ( $collection as $input ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $input instanceof \IPS\Helpers\Form\Checkbox ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class='ipsComposeArea_formControl i-color_soft'>
|
||||
{$input->html()}
|
||||
<label for="check_
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $input->htmlId, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$val = "{$input->name}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</label>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $input->error ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class="ipsFieldRow__warning" data-role="commentFormError">
|
||||
IPSCONTENT;
|
||||
|
||||
$val = "{$input->error}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li><button class='ipsButton ipsButton--primary' data-action="submitComment">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'status_new', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</button></li>
|
||||
</ul>
|
||||
</form>
|
||||
IPSCONTENT;
|
||||
|
||||
return $return;
|
||||
}
|
||||
|
||||
function statusWidgetForm( $id, $action, $elements, $hiddenValues, $actionButtons, $uploadField, $class='' ) {
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<form accept-charset='utf-8' method="post" action="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $action, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" id='elStatusSubmit'
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $uploadField ):
|
||||
$return .= <<<IPSCONTENT
|
||||
enctype="multipart/form-data"
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
>
|
||||
<input type="hidden" name="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $id, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
_submitted" value="1">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
foreach ( $hiddenValues as $k => $v ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<input type="hidden" name="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $k, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" value="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $v, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $uploadField ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<input type="hidden" name="MAX_FILE_SIZE" value="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $uploadField, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
<input type="hidden" name="plupload" value="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( md5( mt_rand() ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
foreach ( $elements as $collection ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
foreach ( $collection as $input ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $input instanceof \IPS\Helpers\Form\Editor ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
{$input->html()}
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $input->error ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<br>
|
||||
<span class="i-color_warning">
|
||||
IPSCONTENT;
|
||||
|
||||
$val = "{$input->error}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='i-margin-top_2'>
|
||||
<button type='submit' class='ipsButton ipsButton--primary ipsButton--wide'>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'status_new', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
return $return;
|
||||
|
||||
@@ -2173,11 +2173,31 @@ $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/fron
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<p class="ipsPhotoPanel__secondary">
|
||||
<a href="
|
||||
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $comment->url(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
|
||||
if ( ! \IPS\Output::i()->reduceLinks() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
">{$comment->dateLine()}</a>
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $comment->shareableUrl(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
{$comment->dateLine()}
|
||||
IPSCONTENT;
|
||||
|
||||
if ( ! \IPS\Output::i()->reduceLinks() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -2836,11 +2856,23 @@ endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( ! \IPS\Output::i()->reduceLinks() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->sharemenu( $comment );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -2962,7 +2994,11 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
<a id='findComment-
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $comment->$idField, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
'></a>
|
||||
<a id='comment-
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $comment->$idField, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
@@ -13040,7 +13076,12 @@ $return .= str_replace( array( 'http://', 'https://' ), '//', htmlspecialchars(
|
||||
$return .= <<<IPSCONTENT
|
||||
" method="post">
|
||||
<div class="i-padding_2 i-position_sticky-top i-flex i-gap_1 i-margin-bottom_2">
|
||||
<input type="search" class="ipsInput ipsInput--text ipsOffCanvas__input" placeholder="Enter search terms.." name="q" autocomplete="off" aria-label="
|
||||
<input type="search" class="ipsInput ipsInput--text ipsOffCanvas__input" placeholder="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'search_placeholder', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
" name="q" autocomplete="off" aria-label="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'search', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
@@ -19174,11 +19215,23 @@ endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( ! \IPS\Output::i()->reduceLinks() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->sharemenu( $review );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -19219,6 +19272,11 @@ $return .= <<<IPSCONTENT
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $review->$idField, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
'></a>
|
||||
<a id='findReview-
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $review->$idField, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
'></a>
|
||||
<article id="elReview_
|
||||
IPSCONTENT;
|
||||
@@ -19804,7 +19862,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$url = $comment->item()->url()->setQueryString( array( 'do' => 'find' . \ucfirst( $type ), $type => $comment->$idField ) );
|
||||
$url = $comment->shareableUrl( $type );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -1522,7 +1522,7 @@ $return .= <<<IPSCONTENT
|
||||
🏆
|
||||
</div>
|
||||
<div class="i-flex_11">
|
||||
<h3 class="ipsTitle ipsTitle--h5">
|
||||
<h3 class="i-font-weight_600 i-color_hard i-font-size_2">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->formatNumber( $member->getReputationDaysWonCount() );
|
||||
@@ -1761,7 +1761,7 @@ $return .= <<<IPSCONTENT
|
||||
{$rank->html( 'ipsDimension i-basis_40' )}
|
||||
</div>
|
||||
<div class="i-flex_11">
|
||||
<h3 class="ipsTitle ipsTitle--h5">
|
||||
<h3 class="i-font-weight_600 i-color_hard i-font-size_2">
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $rank->_title, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
@@ -1848,7 +1848,7 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
<div>
|
||||
<div class="i-flex i-align-items_center i-justify-content_space-between i-margin-bottom_2">
|
||||
<h3 class="ipsTitle ipsTitle--h5">
|
||||
<h3 class="i-font-weight_600 i-color_hard i-font-size_2">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -1866,7 +1866,7 @@ IPSCONTENT;
|
||||
|
||||
$sprintf = array($member->name); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'members_badges', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
" class="i-color_soft i-font-size_-2">
|
||||
" class="i-font-size_-1 i-font-weight_500 i-color_soft">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'view_all', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
@@ -1997,30 +1997,30 @@ if ( \IPS\Settings::i()->warn_on and !$member->inGroup( explode( ',', \IPS\Setti
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class="ipsWidget ipsWidget--warnings">
|
||||
<div class="ipsWidget__content ipsWidget__padding">
|
||||
<div id="elWarningInfo" class="i-flex i-align-items_center i-gap_2 i-border-radius_box
|
||||
<div class="ipsWidget__content">
|
||||
<div class="i-padding_2">
|
||||
<div id="elWarningInfo" class="i-padding_1">
|
||||
<h4 class="i-margin-bottom_2 i-font-weight_600 i-font-size_3
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $member->mod_posts || $member->restrict_post || $member->temp_ban ):
|
||||
$return .= <<<IPSCONTENT
|
||||
i-background_negative i-color_white
|
||||
i-color_negative
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
<div class="i-flex_11">
|
||||
<h4 class="ipsTitle ipsTitle--h5
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $member->mod_posts || $member->restrict_post || $member->temp_ban ):
|
||||
$return .= <<<IPSCONTENT
|
||||
i-color_white
|
||||
<i class="fa-solid fa-triangle-exclamation i-margin-end_icon"></i>
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$pluralize = array( $member->warn_level ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'member_warn_level', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) );
|
||||
@@ -2037,7 +2037,7 @@ IPSCONTENT;
|
||||
|
||||
if ( $member->mod_posts || $member->restrict_post || $member->temp_ban ):
|
||||
$return .= <<<IPSCONTENT
|
||||
i-opacity_7
|
||||
i-color_negative i-font-weight_500
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
@@ -2059,28 +2059,13 @@ IPSCONTENT;
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class="
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $member->mod_posts || $member->restrict_post || $member->temp_ban ):
|
||||
$return .= <<<IPSCONTENT
|
||||
i-opacity_7
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
i-color_soft
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
<div class="i-font-weight_500 i-color_hard">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'restrictions_applied', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</div>
|
||||
<ul class="ipsList ipsList--bullets i-margin-top_2">
|
||||
<ul class="ipsList ipsList--csv">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -2113,13 +2098,11 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'moderation_modq', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</li>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -2158,13 +2141,11 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'moderation_nopost', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</li>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -2203,13 +2184,11 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'moderation_banned', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</li>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -2224,21 +2203,6 @@ endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $member->warn_level > 0 || $member->mod_posts || $member->restrict_post || $member->temp_ban ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class="i-flex_00 i-font-size_2">
|
||||
<i class="fa-solid fa-triangle-exclamation i-color_negative"></i>
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -2246,56 +2210,21 @@ IPSCONTENT;
|
||||
if ( ( \IPS\Member::loggedIn()->canWarn( $member ) || \IPS\Member::loggedIn()->modPermission('can_manage_alerts') || ( \IPS\Member::loggedIn()->modPermission('can_flag_as_spammer') and !$member->modPermission() and !$member->isAdmin() ) ) and $member->member_id != \IPS\Member::loggedIn()->member_id ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class="i-padding-block_2 i-text-align_center">
|
||||
<ul class="ipsButtons ipsButtons--fill i-margin-top_1">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Member::loggedIn()->canWarn( $member ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li>
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $addWarningUrl, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" id="elWarnUserButton" data-ipsdialog data-ipsdialog-title="
|
||||
IPSCONTENT;
|
||||
|
||||
$sprintf = array($member->name); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'warn_member', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
" class="ipsButton ipsButton--inherit ipsButton--small" title="
|
||||
IPSCONTENT;
|
||||
|
||||
$sprintf = array($member->name); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'warn_member', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
"><i class="fa-solid fa-triangle-exclamation"></i>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'warn_user', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
<ul class="ipsButtons ipsButtons--fill i-padding_1 i-padding-top_0">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Member::loggedIn()->modPermission('can_flag_as_spammer') and $member->member_id != \IPS\Member::loggedIn()->member_id and !$member->modPermission() and !$member->isAdmin() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li>
|
||||
|
||||
<li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $member->members_bitoptions['bw_is_spammer'] ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<a href="
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=moderation&do=flagAsSpammer&id={$member->member_id}&s=0" . "&csrfKey=" . \IPS\Session::i()->csrfKey, null, "flag_as_spammer", array( $member->members_seo_name ), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||||
@@ -2316,13 +2245,13 @@ IPSCONTENT;
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'spam_unflag', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<a href="
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=moderation&do=flagAsSpammer&id={$member->member_id}&s=1" . "&csrfKey=" . \IPS\Session::i()->csrfKey, null, "flag_as_spammer", array( $member->members_seo_name ), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||||
@@ -2338,21 +2267,20 @@ IPSCONTENT;
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'spam_flag', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</li>
|
||||
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Member::loggedIn()->modPermission('can_manage_alerts') ):
|
||||
@@ -2369,7 +2297,7 @@ IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'alert_send', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
" class="ipsButton ipsButton--secondary ipsButton--small" title="
|
||||
" class="ipsButton ipsButton--inherit ipsButton--small" title="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'alert_send', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
@@ -2381,15 +2309,47 @@ $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'a
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Member::loggedIn()->canWarn( $member ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li>
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $addWarningUrl, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" id="elWarnUserButton" data-ipsdialog data-ipsdialog-title="
|
||||
IPSCONTENT;
|
||||
|
||||
$sprintf = array($member->name); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'warn_member', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
" class="ipsButton ipsButton--secondary ipsButton--wide ipsButton--small" title="
|
||||
IPSCONTENT;
|
||||
|
||||
$sprintf = array($member->name); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'warn_member', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
"><i class="fa-solid fa-triangle-exclamation"></i>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'warn_user', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</ul>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -2403,7 +2363,7 @@ if ( \count( $member->warnings( 1 ) ) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<i-data data-role="recentWarnings">
|
||||
<ol class="ipsData ipsData--table ipsData--compact ipsData--warnings">
|
||||
<ol class="ipsData ipsData--table ipsData--compact ipsData--warnings i-border-top_3">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -2571,7 +2531,7 @@ IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'revoke_this_warning', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
" data-ipstooltip data-action="revoke" class="ipsButton ipsButton--small ipsButton--inherit ipsButton--icon" data-ipsdialog data-ipsdialog-title="
|
||||
" data-ipstooltip data-action="revoke" class="ipsButton ipsButton--small ipsButton--text ipsButton--icon" data-ipsdialog data-ipsdialog-title="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'revoke_this_warning', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
@@ -2591,13 +2551,13 @@ endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</ol>
|
||||
<p class="i-margin-top_2">
|
||||
<p class="ipsViewAll">
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=warnings&id={$member->member_id}", null, "warn_list", array( $member->members_seo_name ), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" class="ipsButton ipsButton--inherit i-width_100p" title="
|
||||
" title="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'see_all_warnings', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
|
||||
@@ -2139,7 +2139,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--wide ipsButton--soft'>
|
||||
' class='ipsButton ipsButton--soft'>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'find_content', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
|
||||
@@ -2331,7 +2331,7 @@ IPSCONTENT;
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'stream_auto_updates', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</p>
|
||||
<ul class="ipsButtonGroup ipsButton--soft">
|
||||
<ul class="ipsButtonGroup">
|
||||
<li>
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
@@ -2342,12 +2342,12 @@ IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'stream_condensed', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
" class="ipsButtonGroup__button
|
||||
" class="ipsButton
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $view == 'condensed' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
ipsButtonGroup__button--active
|
||||
ipsButton--active
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
@@ -2369,12 +2369,12 @@ IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'stream_expanded', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
" class="ipsButtonGroup__button
|
||||
" class="ipsButton
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $view == 'expanded' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
ipsButtonGroup__button--active
|
||||
ipsButton--active
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
|
||||
@@ -11937,92 +11937,52 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
</a>
|
||||
</h4>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $row->note_member ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='ipsData__desc ipsRichText ipsTruncate_1'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'warn_member_note', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
: {$row->note_member}
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $row->note_mods and \IPS\Member::loggedIn()->modPermission('mod_see_warn') ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='ipsData__desc ipsRichText ipsTruncate_1'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'warn_mod_note', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
: {$row->note_mods}
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<ul class='ipsList ipsList--inline i-margin-top_2'>
|
||||
|
||||
<ul class='ipsList ipsList--sep'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Settings::i()->warnings_acknowledge ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li>
|
||||
|
||||
<li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $row->acknowledged ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<strong class='i-color_positive'><i class='fa-solid fa-check-circle'></i>
|
||||
<strong class='i-color_positive'><i class='fa-solid fa-check-circle'></i>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'warning_acknowledged', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</strong>
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<strong class='i-color_soft'><i class='fa-regular fa-circle'></i>
|
||||
<strong class='i-color_soft'><i class='fa-regular fa-circle'></i>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'warning_not_acknowledged', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</strong>
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</li>
|
||||
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class='i-color_soft'>
|
||||
<li class='i-color_soft'>
|
||||
IPSCONTENT;
|
||||
|
||||
$sprintf = array(\IPS\Member::load( $row->moderator )->name); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'warned_by', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) );
|
||||
@@ -12033,7 +11993,7 @@ 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();
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $row->expire_date > 0 ):
|
||||
@@ -12049,13 +12009,13 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $row->expire_date == 0 ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<em><strong>
|
||||
<em><strong>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'warning_no_longer_active', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
@@ -12076,13 +12036,70 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
</em></strong>
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $row->note_member or ($row->note_mods and \IPS\Member::loggedIn()->modPermission('mod_see_warn')) ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='ipsFluid i-margin-top_3'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $row->note_member ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div>
|
||||
<strong class="i-color_hard i-font-weight_500">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'warn_member_note', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
:</strong>
|
||||
<div class="ipsRichText">{$row->note_member}</div>
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $row->note_mods and \IPS\Member::loggedIn()->modPermission('mod_see_warn') ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div>
|
||||
<strong class="i-color_hard i-font-weight_500">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'warn_mod_note', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
:</strong>
|
||||
<div class="ipsRichText">{$row->note_mods}</div>
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</li>
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -670,7 +670,7 @@ IPSCONTENT;
|
||||
return $return;
|
||||
}
|
||||
|
||||
function overview( $items ) {
|
||||
function overview( $items, $tag ) {
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
@@ -691,16 +691,10 @@ if ( \IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'co
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class="ipsSubmitRow">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$tag = \IPS\Widget\Request::i()->tag;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=search&controller=search&tags={$tag}", null, "search", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=search&controller=search&tags={$tag->text}", null, "search", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" class="ipsButton ipsButton--secondary"><span>
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -4572,6 +4572,12 @@ endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</ul>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->getTemplate( "global", "core", 'global' )->tabScrollers( );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
<section id='el
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -435,7 +435,7 @@ IPSCONTENT;
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'image_align', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</label>
|
||||
<ul class='ipsButtonGroup ipsButton--soft ipsButton--small ipsComposeArea_imageAlign'>
|
||||
<ul class='ipsButtonGroup ipsButton--small ipsComposeArea_imageAlign'>
|
||||
<li>
|
||||
<input type='radio' name='image_align' value='left' id='image_align_left' data-role="imageAlign"
|
||||
IPSCONTENT;
|
||||
@@ -448,12 +448,12 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
>
|
||||
<label for='image_align_left' class='ipsButtonGroup__button
|
||||
<label for='image_align_left' class='ipsButton
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $float == 'left' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
ipsButtonGroup__button--active
|
||||
ipsButton--active
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
@@ -479,12 +479,12 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
>
|
||||
<label for='image_align_none' class='ipsButtonGroup__button
|
||||
<label for='image_align_none' class='ipsButton
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $float !== 'left' && $float !=='right' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
ipsButtonGroup__button--active
|
||||
ipsButton--active
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
@@ -510,12 +510,12 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
>
|
||||
<label for='image_align_right' class='ipsButtonGroup__button
|
||||
<label for='image_align_right' class='ipsButton
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $float == 'right' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
ipsButtonGroup__button--active
|
||||
ipsButton--active
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
|
||||
@@ -1321,6 +1321,24 @@ IPSCONTENT;
|
||||
$return = '';
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $id === NULL ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$id = md5(uniqid());
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<input type="hidden" name="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $hiddenName, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
|
||||
@@ -1265,7 +1265,7 @@ endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</ul>
|
||||
<ul class='ipsButtons ipsButtons--end i-flex_11 i-basis_100p'>
|
||||
<ul class='ipsButtons ipsButtons--end i-flex_11'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -1273,19 +1273,19 @@ if ( $chart->showIntervals ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li data-role="groupingButtons">
|
||||
<ul class="ipsButtonGroup ipsButton--soft ipsButton--small">
|
||||
<ul class="ipsButtonGroup ipsButton--small">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $chart->enableHourly ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li><a class='ipsButtonGroup__button
|
||||
<li><a class='ipsButton
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $chart->timescale == 'hourly' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
ipsButtonGroup__button--active
|
||||
ipsButton--active
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
@@ -1332,12 +1332,12 @@ IPSCONTENT;
|
||||
foreach ( array( 'daily', 'weekly', 'monthly' ) as $k ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li><a class='ipsButtonGroup__button
|
||||
<li><a class='ipsButton
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $chart->timescale == $k ):
|
||||
$return .= <<<IPSCONTENT
|
||||
ipsButtonGroup__button--active
|
||||
ipsButton--active
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
@@ -1753,19 +1753,13 @@ endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \count( $chart->availableTypes ) > 1 || $chart instanceof \IPS\Helpers\Chart\Dynamic ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class=''>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $chart instanceof \IPS\Helpers\Chart\Dynamic ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<a class='ipsButton ipsButton--soft ipsButton--small' href='
|
||||
<li>
|
||||
<a class='ipsButton ipsButton--soft ipsButton--small' href='
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $chart->url->setQueryString(array( "download" => 1 ))->csrf() , ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
@@ -1775,31 +1769,33 @@ IPSCONTENT;
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'download_as_csv', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
' data-role='downloadChart'><i class="fa-solid fa-download"></i> CSV</a>
|
||||
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \count( $chart->availableTypes ) > 1 ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<span class="ipsButtonGroup ipsButton--soft ipsButton--small">
|
||||
|
||||
<li>
|
||||
<div class="ipsButtonGroup ipsButton--small">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
foreach ( $chart->availableTypes as $t ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<a class='ipsButtonGroup__button
|
||||
<a class='ipsButton
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $chart->type == $t ):
|
||||
$return .= <<<IPSCONTENT
|
||||
ipsButtonGroup__button--active
|
||||
ipsButton--active
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
@@ -1828,75 +1824,69 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
>
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $t === 'Table' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<i class="fa-solid fa-table"></i>
|
||||
|
||||
<i class="fa-solid fa-table"></i>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
elseif ( $t === 'LineChart' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<i class="fa-solid fa-chart-line"></i>
|
||||
|
||||
<i class="fa-solid fa-chart-line"></i>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
elseif ( $t == 'AreaChart' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<i class='fa-solid fa-chart-area'></i>
|
||||
|
||||
<i class='fa-solid fa-chart-area'></i>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
elseif ( $t === 'ColumnChart' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<i class="fa-solid fa-chart-column"></i>
|
||||
|
||||
<i class="fa-solid fa-chart-column"></i>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
elseif ( $t === 'BarChart' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<i class="fa-solid fa-chart-column fa-rotate-90"></i>
|
||||
|
||||
<i class="fa-solid fa-chart-column fa-rotate-90"></i>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
elseif ( $t === 'PieChart' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<i class="fa-solid fa-pie-chart"></i>
|
||||
|
||||
<i class="fa-solid fa-pie-chart"></i>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
elseif ( $t === 'GeoChart' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<i class="fa-solid fa-earth-americas"></i>
|
||||
|
||||
<i class="fa-solid fa-earth-americas"></i>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</a>
|
||||
|
||||
</a>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</span>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -2602,17 +2602,7 @@ if ( $file->canEdit() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<span data-controller="core.front.core.moderation">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $file->locked() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
<i class="fa-solid fa-lock"></i>
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
<span data-role="editableTitle" title="
|
||||
<span data-role="editableTitle" title="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'click_hold_edit', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
@@ -2645,16 +2635,6 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
<span>
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $file->locked() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
<i class="fa-solid fa-lock"></i>
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $file->name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
@@ -649,6 +649,11 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( ! \IPS\Output::i()->reduceLinks() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li><a href='
|
||||
IPSCONTENT;
|
||||
@@ -664,6 +669,12 @@ IPSCONTENT;
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'share_this_comment', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a></li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</menu>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -143,7 +143,7 @@ IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "forums/front/forums/forumButtons", "buttons:before", [ $forum ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
<ul data-ips-hook="buttons" class="ipsButtons ipsButtons--main ipsButtons--margin">
|
||||
<ul data-ips-hook="buttons" class="ipsButtons ipsButtons--main i-margin-block_block">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "forums/front/forums/forumButtons", "buttons:inside-start", [ $forum ] );
|
||||
@@ -5032,7 +5032,12 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
<div class="ipsData__last-secondary">
|
||||
<a href="
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( ! \IPS\Output::i()->reduceLinks() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $row->url( 'getLastComment' ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
@@ -5042,6 +5047,11 @@ IPSCONTENT;
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'get_last_post', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -5068,7 +5078,17 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</a>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( ! \IPS\Output::i()->reduceLinks() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -544,41 +544,6 @@ IPSCONTENT;
|
||||
$pluralize = array( $count ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'posts_number', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize, 'format' => 'long' ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $forum->followerCount ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li data-el="grid-follower-count">
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=notifications&do=followers&follow_app=forums&follow_area=forum&follow_id={$forum->_id}", null, "", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" title="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'followers_tooltip', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
" data-ipstooltip data-ipsdialog data-ipsdialog-size="narrow" data-ipsdialog-title="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'who_follows_this', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
IPSCONTENT;
|
||||
|
||||
$pluralize = array( $forum->followerCount ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'forum_follower_count', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -2176,41 +2141,6 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $forum->followerCount ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li data-el="grid-follower-count">
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=notifications&do=followers&follow_app=forums&follow_area=forum&follow_id={$forum->_id}", null, "", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" title="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'followers_tooltip', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
" data-ipstooltip data-ipsdialog data-ipsdialog-size="narrow" data-ipsdialog-title="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'who_follows_this', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
IPSCONTENT;
|
||||
|
||||
$pluralize = array( $forum->followerCount ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'forum_follower_count', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -2391,20 +2321,6 @@ $return .= <<<IPSCONTENT
|
||||
</small>
|
||||
</div>
|
||||
<div class="ipsData__extra">
|
||||
<ul class="ipsData__stats">
|
||||
<li data-stattype="comments" data-v="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $lastPost['posts'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
<span class="ipsData__stats-label">
|
||||
IPSCONTENT;
|
||||
|
||||
$pluralize = array( $lastPost['posts'] ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'num_comments', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="ipsData__last">
|
||||
<div class="ipsData__last-text">
|
||||
<div class="ipsData__last-primary">
|
||||
@@ -2501,6 +2417,20 @@ $return .= <<<IPSCONTENT
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<ul class="ipsData__stats">
|
||||
<li data-stattype="comments" data-v="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $lastPost['posts'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
<span class="ipsData__stats-label">
|
||||
IPSCONTENT;
|
||||
|
||||
$pluralize = array( $lastPost['posts'] ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'num_comments', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
@@ -53,7 +53,8 @@ IPSCONTENT;
|
||||
if ( $location == 'sidebar' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class="ipsWidget cTopicOverview cTopicOverview--sidebar i-flex i-flex-direction_column i-overflow_hidden ipsResponsive_showDesktop"
|
||||
<div class="ipsWidget cTopicOverviewContainer">
|
||||
<div class="cTopicOverview cTopicOverview--sidebar ipsResponsive_showDesktop"
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $hasAnyContent ):
|
||||
@@ -70,7 +71,7 @@ IPSCONTENT;
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class="cTopicOverview cTopicOverview--row i-flex
|
||||
<div class="ipsBox ipsPull cTopicOverviewContainer
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $topic->showSummaryOnDesktop() != 'post' ):
|
||||
@@ -90,7 +91,8 @@ IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
"
|
||||
">
|
||||
<div class="cTopicOverview cTopicOverview--main"
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $hasAnyContent ):
|
||||
@@ -107,225 +109,106 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='cTopicOverview__header i-background_1 i-flex_00 i-flex i-flex-wrap_wrap'>
|
||||
<ul class="iTopicOverview__header i-flex_91 i-padding_3 i-flex i-flex-wrap_wrap i-justify-content_space-around i-gap_3 i-text-align_center">
|
||||
<li>
|
||||
<span class="i-color_soft i-font-weight_500 i-display_block">
|
||||
<div class="cTopicOverview__content">
|
||||
<ul class='cTopicOverview__item cTopicOverview__item--stats'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $topic->posts > 1 ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li>
|
||||
<span class="i-color_soft i-font-weight_500">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'replies', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
<span class="i-color_hard i-font-weight_700 i-display_block i-font-size_3">
|
||||
<span class="i-color_hard i-font-weight_700 i-font-size_3">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->formatNumberShort( $topic->posts-1 );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
</li>
|
||||
<li>
|
||||
<span class="i-color_soft i-font-weight_500 i-display_block">
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li>
|
||||
<span class="i-color_soft i-font-weight_500">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'views', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
<span class="i-color_hard i-font-weight_700 i-font-size_3">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->formatNumberShort( $topic->views );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
</li>
|
||||
<li>
|
||||
<span class="i-color_soft i-font-weight_500">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'topicactivity_created', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
<span class="i-color_hard i-font-weight_700 i-display_block i-font-size_3">
|
||||
<span class="i-color_hard i-font-weight_700 i-font-size_3">
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $topic->start_date instanceof \IPS\DateTime ) ? $topic->start_date : \IPS\DateTime::ts( $topic->start_date );$return .= $val->html(TRUE, TRUE);
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
</li>
|
||||
<li>
|
||||
<span class="i-color_soft i-font-weight_500 i-display_block">
|
||||
</li>
|
||||
<li>
|
||||
<span class="i-color_soft i-font-weight_500">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'last_reply', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
<span class="i-color_hard i-font-weight_700 i-display_block i-font-size_3">
|
||||
<span class="i-color_hard i-font-weight_700 i-font-size_3">
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $topic->last_post instanceof \IPS\DateTime ) ? $topic->last_post : \IPS\DateTime::ts( $topic->last_post );$return .= $val->html(TRUE, TRUE);
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $location != 'sidebar' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<a href='#' data-action='toggleOverview' class='cTopicOverview__toggle cTopicOverview__toggle--row i-flex_10 i-basis_80 i-color_soft i-font-size_2'><span class="ipsInvisible">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'topicactivity_expand', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span><i class='fa-solid fa-chevron-down'></i></a>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $location !== 'sidebar' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='cTopicOverview__preview i-flex_10' data-role="preview">
|
||||
<div class='cTopicOverview__previewInner i-padding_3 i-flex i-gap_3 ipsResponsive_hidePhone'>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $members ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='cTopicOverview__section--users i-flex_00'>
|
||||
<h4 class='cTopicOverview__sectionTitle i-font-size_-1 i-color_hard i-text-transform_uppercase i-font-weight_600'>
|
||||
<div class='cTopicOverview__item cTopicOverview__item--topPosters'>
|
||||
<h4 class='cTopicOverview__title'>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'topicactivity_topposters', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</h4>
|
||||
<ul class='cTopicOverview__dataList i-flex i-justify-content_space-between i-align-items_center i-gap_3 i-margin-top_1'>
|
||||
|
||||
<ul class='cTopicOverview__dataList'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
foreach ( $members as $data ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class="cTopicOverview__dataItem i-flex i-justify-content_start i-align-items_center i-gap_2">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->userPhoto( $data['member'], 'tiny' );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<span>
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $data['count'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $busy ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='cTopicOverview__section--popularDays i-flex_00'>
|
||||
<h4 class='cTopicOverview__sectionTitle i-font-size_-1 i-color_hard i-text-transform_uppercase i-font-weight_600'>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'topicactivity_populardays', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</h4>
|
||||
<ul class='cTopicOverview__dataList i-flex i-justify-content_space-between i-align-items_center i-gap_3 i-margin-top_1'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
foreach ( $busy as $row ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class='i-flex_10'>
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $topic->url()->setQueryString( array( 'do' => 'findComment', 'comment' => $row['commentId'] ) ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" rel="nofollow" class='cTopicOverview__dataItem i-flex i-justify-content_space-between i-align-items_center i-gap_2'>
|
||||
<span class='i-color_soft'>
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $row['date']->dayAndShortMonth(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
<span class='i-font-weight_500 i-color_hard'>
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $row['count'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='cTopicOverview__body i-padding_3 i-gap_3
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $location !== 'sidebar' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
ipsHide i-flex i-flex_11 i-flex-direction_column
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
' data-role="overview">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $members ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='cTopicOverview__section--users'>
|
||||
<h4 class='ipsTitle ipsTitle--hr ipsTitle--h6 i-font-weight_600 i-text-transform_uppercase i-font-size_-2 i-margin-bottom_2'>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'topicactivity_topposters', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</h4>
|
||||
<ul class='cTopicOverview__dataList ipsGrid i-basis_140 i-gap_2'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
foreach ( $members as $data ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li class="ipsPhotoPanel">
|
||||
|
||||
<li class="ipsPhotoPanel">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->userPhoto( $data['member'], 'fluid' );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='ipsPhotoPanel__text'>
|
||||
<strong class='ipsPhotoPanel__primary'><a href='
|
||||
<div class='ipsPhotoPanel__text'>
|
||||
<strong class='ipsPhotoPanel__primary i-color_hard'><a href='
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $data['member']->url(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
@@ -334,55 +217,55 @@ IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $data['member']->name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
</a></strong>
|
||||
<span class='ipsPhotoPanel__secondary'>
|
||||
<span class='ipsPhotoPanel__secondary'>
|
||||
IPSCONTENT;
|
||||
|
||||
$pluralize = array( $data['count'] ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'topicactivity_number_posts', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
</div>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $busy ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='cTopicOverview__section--popularDays'>
|
||||
<h4 class='ipsTitle ipsTitle--hr ipsTitle--h6 i-font-weight_600 i-text-transform_uppercase i-font-size_-2 i-margin-top_4 i-margin-bottom_2'>
|
||||
<div class='cTopicOverview__item cTopicOverview__item--popularDays'>
|
||||
<h4 class='cTopicOverview__title'>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'topicactivity_populardays', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</h4>
|
||||
<ul class='cTopicOverview__dataList ipsGrid i-basis_140 i-gap_2'>
|
||||
|
||||
<ul class='cTopicOverview__dataList'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
foreach ( $busy as $row ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li>
|
||||
<a href="
|
||||
<li>
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $topic->url()->setQueryString( array( 'do' => 'findComment', 'comment' => $row['commentId'] ) ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $topic->shareableUrl( $row['commentId'] ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" rel="nofollow" class='cTopicOverview__dataItem i-flex i-justify-content_start i-align-items_center i-gap_2'>
|
||||
<span class='i-font-weight_bold'>
|
||||
" rel="nofollow" class='cTopicOverview__dataItem i-grid i-color_soft'>
|
||||
<span class='i-font-weight_bold i-color_hard'>
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $row['date']->dayAndShortMonth(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
@@ -391,60 +274,52 @@ IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $row['date']->format('Y'), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
<span class='i-color_soft'>
|
||||
<span>
|
||||
IPSCONTENT;
|
||||
|
||||
$pluralize = array( $row['count'] ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'topicactivity_number_posts', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</a>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $reacted ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='cTopicOverview__section--topPost'>
|
||||
<h4 class='ipsTitle ipsTitle--hr ipsTitle--h6 i-font-weight_600 i-text-transform_uppercase i-font-size_-2 i-margin-top_4'>
|
||||
<div class='cTopicOverview__item cTopicOverview__item--popularPosts'>
|
||||
<h4 class='cTopicOverview__title'>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'topicactivity_popularposts', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</h4>
|
||||
|
||||
<ul class='cTopicOverview__dataList'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
foreach ( $reacted as $data ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='i-position_relative'>
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $data['comment']->url(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" rel="nofollow" class="i-position_cover" aria-hidden='true'><span class='ipsInvisible'>
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $data['comment']->author()->name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span></a>
|
||||
<div class='ipsPhotoPanel ipsPhotoPanel--tiny i-margin-top_3'>
|
||||
<span class='ipsUserPhoto'>
|
||||
<img src='
|
||||
<li>
|
||||
<div class='ipsPhotoPanel ipsPhotoPanel--tiny'>
|
||||
<span class='ipsUserPhoto'>
|
||||
<img src='
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $data['comment']->author()->photo, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
@@ -453,74 +328,73 @@ IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $data['comment']->author()->name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
' loading='lazy'>
|
||||
</span>
|
||||
<div class="ipsPhotoPanel__text">
|
||||
<h5 class='ipsPhotoPanel__primary'>
|
||||
</span>
|
||||
<div class="ipsPhotoPanel__text">
|
||||
<h5 class='ipsPhotoPanel__primary i-color_hard'>
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $data['comment']->author()->name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
</h5>
|
||||
<p class='ipsPhotoPanel__secondary'>
|
||||
<p class='ipsPhotoPanel__secondary'>
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $data['comment']->url(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" rel="nofollow">
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $data['comment']->mapped('date') instanceof \IPS\DateTime ) ? $data['comment']->mapped('date') : \IPS\DateTime::ts( $data['comment']->mapped('date') );$return .= $val->html();
|
||||
$return .= <<<IPSCONTENT
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<p class='i-margin-top_2 ipsRichText ipsTruncate_3'>
|
||||
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<p class='i-margin-top_2 ipsRichText ipsTruncate_3'>
|
||||
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $data['comment']->truncated(true, 200), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</p>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $helpful ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='cTopicOverview__section--topPost'>
|
||||
<h4 class='ipsTitle ipsTitle--hr ipsTitle--h6 i-font-weight_600 i-text-transform_uppercase i-font-size_-2 i-margin-top_4'>
|
||||
<div class='cTopicOverview__item cTopicOverview__item--helpfulPosts'>
|
||||
<h4 class='cTopicOverview__title'>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'topicactivity_helpfulposts', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</h4>
|
||||
|
||||
<ul class='cTopicOverview__dataList'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
foreach ( $helpful as $data ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='i-position_relative'>
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $data['comment']->url(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" rel="nofollow" class="i-position_cover" aria-hidden='true'><span class='ipsInvisible'>
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $data['comment']->author()->name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span></a>
|
||||
<div class='ipsPhotoPanel ipsPhotoPanel--tiny i-margin-top_3'>
|
||||
<span class='ipsUserPhoto'>
|
||||
<img src='
|
||||
<li>
|
||||
<div class='ipsPhotoPanel ipsPhotoPanel--tiny'>
|
||||
<span class='ipsUserPhoto'>
|
||||
<img src='
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $data['comment']->author()->photo, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
@@ -529,57 +403,63 @@ IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $data['comment']->author()->name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
' loading='lazy'>
|
||||
</span>
|
||||
<div>
|
||||
<h5 class='i-font-weight_bold'>
|
||||
</span>
|
||||
<div class="ipsPhotoPanel__text">
|
||||
<h5 class="ipsPhotoPanel__primary i-color_hard">
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $data['comment']->author()->name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
</h5>
|
||||
<p class='i-color_soft'>
|
||||
<p class="ipsPhotoPanel__secondary">
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $data['comment']->shareableUrl(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" rel="nofollow">
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $data['comment']->mapped('date') instanceof \IPS\DateTime ) ? $data['comment']->mapped('date') : \IPS\DateTime::ts( $data['comment']->mapped('date') );$return .= $val->html();
|
||||
$return .= <<<IPSCONTENT
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<p class='i-margin-top_2 ipsRichText ipsTruncate_3'>
|
||||
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<p class='i-margin-top_2 ipsRichText ipsTruncate_3'>
|
||||
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $data['comment']->truncated(true, 200), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</p>
|
||||
</li>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endforeach;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $images ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class='cTopicOverview__section--images'>
|
||||
<h4 class='ipsTitle ipsTitle--hr ipsTitle--h6 i-font-weight_600 i-text-transform_uppercase i-font-size_-2 i-margin-top_4'>
|
||||
<div class='cTopicOverview__item cTopicOverview__item--images'>
|
||||
<h4 class='cTopicOverview__title'>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'topicactivity_images', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</h4>
|
||||
<div class="i-margin-top_2" data-controller='core.front.core.lightboxedImages'>
|
||||
<ul class='cTopicOverview__imageGrid ipsGrid i-basis_120 i-gap_1'>
|
||||
<ul class='cTopicOverview__imageGrid' data-controller='core.front.core.lightboxedImages'>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -613,7 +493,25 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $hasAnyContent ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<button type="button" data-action='toggleOverview' class='cTopicOverview__toggle'><span class="ipsInvisible">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'topicactivity_expand', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span><i class='fa-solid fa-chevron-down'></i></button>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -621,46 +519,7 @@ endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $location !== 'sidebar' and $hasAnyContent ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<a href='#' data-action='toggleOverview' class='cTopicOverview__toggle cTopicOverview__toggle--afterStats i-font-size_2 i-color_soft i-padding_3 i-flex i-align-items_center i-justify-content_center'><span class="ipsInvisible">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'topicactivity_expand', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
</span><i class='fa-solid fa-chevron-down'></i></a>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( $location == 'sidebar' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
else:
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
return $return;
|
||||
@@ -819,11 +678,31 @@ $return .= <<<IPSCONTENT
|
||||
>
|
||||
<div class="ipsEntry__post">
|
||||
<div class="ipsEntry__meta">
|
||||
<a href="
|
||||
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $comment->item()->url()->setQueryString( array( 'do' => 'findComment', 'comment' => $comment->$idField ) ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
|
||||
if ( ! \IPS\Output::i()->reduceLinks() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
" class="ipsEntry__date" rel="nofollow">{$comment->dateLine()}</a>
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $comment->shareableUrl(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" class="ipsEntry__date" rel="nofollow">
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
{$comment->dateLine()}
|
||||
IPSCONTENT;
|
||||
|
||||
if ( ! \IPS\Output::i()->reduceLinks() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<!-- Traditional badges -->
|
||||
|
||||
IPSCONTENT;
|
||||
@@ -1611,11 +1490,23 @@ endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( ! \IPS\Output::i()->reduceLinks() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->sharemenu( $comment );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -1727,6 +1618,11 @@ IPSCONTENT;
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<a id="findComment-
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $comment->$idField, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
"></a>
|
||||
<div id="comment-
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $comment->$idField, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
@@ -2816,11 +2712,31 @@ $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "forums/fr
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<p class="ipsPhotoPanel__secondary">
|
||||
<a href="
|
||||
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $comment->item()->url()->setQueryString( array( 'do' => 'findComment', 'comment' => $comment->$idField ) ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
|
||||
if ( ! \IPS\Output::i()->reduceLinks() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
" rel="nofollow">{$comment->dateLine()}</a>
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $comment->shareableUrl(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" rel="nofollow">
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
{$comment->dateLine()}
|
||||
IPSCONTENT;
|
||||
|
||||
if ( ! \IPS\Output::i()->reduceLinks() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1036,7 +1036,7 @@ IPSCONTENT;
|
||||
if ( \IPS\Widget\Request::i()->controller != 'forums' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class="ipsData__category" data-hide-on="minimal"><a href="
|
||||
<div class="ipsData__category"><a href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $topic->container()->url(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
@@ -1194,7 +1194,7 @@ endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
<div class="ipsData__extra" data-hide-on="minimal">
|
||||
<div class="ipsData__extra">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -1297,6 +1297,58 @@ $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "forums/fr
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "forums/front/widgets/topicFeedRow", "latestAuthorPhoto:before", [ $topic,$layout,$isCarousel ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
<div class="ipsData__last ipsData__last--author" data-ips-hook="latestAuthorPhoto">
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "forums/front/widgets/topicFeedRow", "latestAuthorPhoto:inside-start", [ $topic,$layout,$isCarousel ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->userPhoto( $topic->author(), 'fluid' );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<div class="ipsData__last-text">
|
||||
<div class="ipsData__last-primary">
|
||||
{$topic->author()->link( NULL, NULL, $topic->isAnonymous() )}
|
||||
</div>
|
||||
<div class="ipsData__last-secondary">
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $topic->url( 'getLastComment' ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" title="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'get_last_post', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$val = ( $topic->mapped('date') instanceof \IPS\DateTime ) ? $topic->mapped('date') : \IPS\DateTime::ts( $topic->mapped('date') );$return .= $val->html();
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "forums/front/widgets/topicFeedRow", "latestAuthorPhoto:inside-end", [ $topic,$layout,$isCarousel ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
</div>
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "forums/front/widgets/topicFeedRow", "latestAuthorPhoto:after", [ $topic,$layout,$isCarousel ] );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "forums/front/widgets/topicFeedRow", "latestUserPhoto:before", [ $topic,$layout,$isCarousel ] );
|
||||
|
||||
@@ -2477,19 +2477,19 @@ if ( !$currentCategory ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
<li>
|
||||
<ul class="ipsButtonGroup ipsButton--soft">
|
||||
<ul class="ipsButtonGroup">
|
||||
<li>
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=gallery", null, "gallery", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" class="ipsButtonGroup__button
|
||||
" class="ipsButton
|
||||
IPSCONTENT;
|
||||
|
||||
if ( !\IPS\Widget\Request::i()->do=='categories' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
ipsButtonGroup__button--active
|
||||
ipsButton--active
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
@@ -2509,12 +2509,12 @@ IPSCONTENT;
|
||||
|
||||
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=gallery&module=gallery&controller=browse&do=categories", null, "gallery_categories", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
|
||||
$return .= <<<IPSCONTENT
|
||||
" class="ipsButtonGroup__button
|
||||
" class="ipsButton
|
||||
IPSCONTENT;
|
||||
|
||||
if ( \IPS\Widget\Request::i()->do=='categories' ):
|
||||
$return .= <<<IPSCONTENT
|
||||
ipsButtonGroup__button--active
|
||||
ipsButton--active
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
|
||||
@@ -412,11 +412,31 @@ $return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
<p class="ipsPhotoPanel__secondary">
|
||||
<a href="
|
||||
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $comment->url(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
|
||||
if ( ! \IPS\Output::i()->reduceLinks() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
">{$comment->dateLine()}</a>
|
||||
<a href="
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $comment->shareableUrl(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
">
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
{$comment->dateLine()}
|
||||
IPSCONTENT;
|
||||
|
||||
if ( ! \IPS\Output::i()->reduceLinks() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
</a>
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -1032,11 +1052,23 @@ endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( ! \IPS\Output::i()->reduceLinks() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->sharemenu( $comment );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -1149,6 +1181,11 @@ endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
<a id='findComment-
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $comment->$idField, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
'></a>
|
||||
<a id='comment-
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $comment->$idField, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
@@ -4745,11 +4782,23 @@ endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
if ( ! \IPS\Output::i()->reduceLinks() ):
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->sharemenu( $review );
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
|
||||
IPSCONTENT;
|
||||
|
||||
endif;
|
||||
$return .= <<<IPSCONTENT
|
||||
|
||||
</div>
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -4790,6 +4839,11 @@ $return .= <<<IPSCONTENT
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $review->$idField, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
'></a>
|
||||
<a id='findReview-
|
||||
IPSCONTENT;
|
||||
$return .= \IPS\Theme\Template::htmlspecialchars( $review->$idField, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
|
||||
$return .= <<<IPSCONTENT
|
||||
'></a>
|
||||
<article id="elReview_
|
||||
IPSCONTENT;
|
||||
|
||||
@@ -356,7 +356,7 @@ $return .= <<<IPSCONTENT
|
||||
</div>
|
||||
</i-data>
|
||||
</div>
|
||||
<ul class="ipsButtons ipsButtons--main ipsButtons--margin">
|
||||
<ul class="ipsButtons ipsButtons--main i-margin-block_block">
|
||||
<li>
|
||||
<a class="ipsButton ipsButton--text" href="
|
||||
IPSCONTENT;
|
||||
|
||||
Reference in new issue
Block a user