Version 5.0.0 beta 6

This commit is contained in:
Neo committed 2025-12-19 17:12:27 -08:00
1 parent 57d9db6ce2
commit fa2a720105
115 files changed
+1823 -1147

No files matched your search

+2 -2
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<javascript app="blog">
<file javascript_app="blog" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.manageCategories.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000100"><![CDATA[/**
<file javascript_app="blog" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.manageCategories.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000100"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -277,7 +277,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="blog" javascript_location="front" javascript_path="templates" javascript_name="ips.templates.view.js" javascript_type="template" javascript_version="5000031" javascript_position="1000050"><![CDATA[/* CLASS LIST TEMPLATES */
<file javascript_app="blog" javascript_location="front" javascript_path="templates" javascript_name="ips.templates.view.js" javascript_type="template" javascript_version="5000032" javascript_position="1000050"><![CDATA[/* CLASS LIST TEMPLATES */
ips.templates.set('blog.view.addButton', "\
<li><button type=\"button\" class=\"ipsButton ipsButton--primary ipsHide\" data-action=\"addNew\">{{#lang}}manage_cats_new_row{{/lang}}</button></li>\
");
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<language>
<app key="blog" version="5000031">
<app key="blog" version="5000032">
<word key="__app_blog" js="0">Blogs</word>
<word key="frontnavigation_blogs" js="0">Blogs</word>
<word key="__indefart_blog_entry_comment" js="0">a comment on a blog entry</word>
+2 -1
View File
@@ -280,5 +280,6 @@
"5000028": "5.0.0 Beta 2",
"5000029": "5.0.0 Beta 3",
"5000030": "5.0.0 Beta 4",
"5000031": "5.0.0 Beta 5"
"5000031": "5.0.0 Beta 5",
"5000032": "5.0.0 Beta 6"
}
@@ -0,0 +1,22 @@
{
"id": 5000032,
"name": "5.0.0 Beta 6",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeeditor": true,
"javascript": false,
"emailTemplates": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,14 @@
{
"categories": {
"added": [],
"edited": [],
"removed": []
},
"settings": {
"added": [],
"edited": [
"layout_blog_view"
],
"removed": []
}
}
@@ -162,7 +162,12 @@ class Category extends Model
$class = get_called_class();
$form->add( new Node( 'category_parent', $this->id ? $this->parent : 0, TRUE, array( 'class' => 'IPS\blog\Category', 'subnodes' => FALSE, 'zeroVal' => 'no_parent', 'permissionCheck' => function( $node ) use ( $class )
$form->add( new Node( 'category_parent', $this->id ? $this->parent : 0, TRUE, [
'class' => Category::class,
'subnodes' => FALSE,
'zeroVal' => 'no_parent',
'disableCopy' => true,
'permissionCheck' => function( $node ) use ( $class )
{
if( isset( $class::$subnodeClass ) AND $class::$subnodeClass AND $node instanceof $class::$subnodeClass )
{
@@ -170,7 +175,9 @@ class Category extends Model
}
return !isset( Request::i()->id ) or ( $node->id != Request::i()->id and !$node->isChildOf( $node::load( Request::i()->id ) ) );
} ) ) );
}
]
) );
parent::form( $form );
}
+12 -12
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<javascript app="calendar">
<file javascript_app="calendar" javascript_location="front" javascript_path="controllers/browse" javascript_name="ips.browse.main.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000250"><![CDATA[/**
<file javascript_app="calendar" javascript_location="front" javascript_path="controllers/browse" javascript_name="ips.browse.main.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000250"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -110,7 +110,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="calendar" javascript_location="front" javascript_path="controllers/browse" javascript_name="ips.browse.monthView.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000250"><![CDATA[/**
<file javascript_app="calendar" javascript_location="front" javascript_path="controllers/browse" javascript_name="ips.browse.monthView.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000250"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -229,7 +229,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="calendar" javascript_location="front" javascript_path="controllers/overview" javascript_name="ips.overview.eventList.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000300"><![CDATA[/**
<file javascript_app="calendar" javascript_location="front" javascript_path="controllers/overview" javascript_name="ips.overview.eventList.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000300"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -347,7 +347,7 @@ var PER_PAGE = 16;
}
});
}(jQuery, _));]]></file>
<file javascript_app="calendar" javascript_location="front" javascript_path="controllers/overview" javascript_name="ips.overview.nearMe.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000300"><![CDATA[/**
<file javascript_app="calendar" javascript_location="front" javascript_path="controllers/overview" javascript_name="ips.overview.nearMe.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000300"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -711,7 +711,7 @@ var PER_PAGE = 16;
}
});
}(jQuery, _));]]></file>
<file javascript_app="calendar" javascript_location="front" javascript_path="controllers/overview" javascript_name="ips.overview.search.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000300"><![CDATA[/**
<file javascript_app="calendar" javascript_location="front" javascript_path="controllers/overview" javascript_name="ips.overview.search.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000300"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -1024,7 +1024,7 @@ var PER_PAGE = 16;
this._mapContainer.hide();
}
if (response.virtual) {
if (response.virtual || !response.markerCount) {
this._mapContainer.hide();
}
@@ -1265,7 +1265,7 @@ var PER_PAGE = 16;
});
}(jQuery, _));
]]></file>
<file javascript_app="calendar" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.dates.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000100"><![CDATA[/**
<file javascript_app="calendar" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.dates.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000100"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -1813,7 +1813,7 @@ var PER_PAGE = 16;
}
});
}(jQuery, _));]]></file>
<file javascript_app="calendar" javascript_location="front" javascript_path="controllers/venue" javascript_name="ips.venue.main.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000200"><![CDATA[/**
<file javascript_app="calendar" javascript_location="front" javascript_path="controllers/venue" javascript_name="ips.venue.main.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000200"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -1920,7 +1920,7 @@ var PER_PAGE = 16;
}
});
}(jQuery, _));]]></file>
<file javascript_app="calendar" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.reminderButton.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000150"><![CDATA[/**
<file javascript_app="calendar" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.reminderButton.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000150"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -2003,7 +2003,7 @@ var PER_PAGE = 16;
}
});
}(jQuery, _));]]></file>
<file javascript_app="calendar" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.reminderForm.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000150">/**
<file javascript_app="calendar" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.reminderForm.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000150">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -2113,7 +2113,7 @@ var PER_PAGE = 16;
});
}(jQuery, _));
</file>
<file javascript_app="calendar" javascript_location="front" javascript_path="templates" javascript_name="ips.calendar.templates.js" javascript_type="framework" javascript_version="5000031" javascript_position="1000050"><![CDATA[/**
<file javascript_app="calendar" javascript_location="front" javascript_path="templates" javascript_name="ips.calendar.templates.js" javascript_type="framework" javascript_version="5000032" javascript_position="1000050"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*/
@@ -2122,7 +2122,7 @@ var PER_PAGE = 16;
ips.templates.set('calendar.reminder.loading', " \
<div class='ipsLoading ipsLoading--tiny'></div>\
");]]></file>
<file javascript_app="calendar" javascript_location="front" javascript_path="templates" javascript_name="ips.templates.overview.js" javascript_type="template" javascript_version="5000031" javascript_position="1000050"><![CDATA[ips.templates.set("eventLoading", `
<file javascript_app="calendar" javascript_location="front" javascript_path="templates" javascript_name="ips.templates.overview.js" javascript_type="template" javascript_version="5000032" javascript_position="1000050"><![CDATA[ips.templates.set("eventLoading", `
<li class='ipsData__item ipsData__item--loading'>
<div class="ipsData__image"></div>
<div class="ipsData__content">
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<language>
<app key="calendar" version="5000031">
<app key="calendar" version="5000032">
<word key="__app_calendar" js="0">Events</word>
<word key="frontnavigation_calendar" js="0">Events</word>
<word key="__indefart_calendar_event_comment" js="0">a comment on an event</word>
+5 -6
View File
@@ -1797,7 +1797,7 @@
{$comment->html()|raw}
{{endforeach}}
{{else}}
<p class='i-color_soft i-text-align_center' data-role='noComments'>{lang="no_comments"}</p>
<p class='ipsEmptyMessage' data-role='noComments'>{lang="no_comments"}</p>
{{endif}}
{template="commentMultimod" app="core" group="global" params="$event"}
</form>
@@ -1807,7 +1807,7 @@
{$event->commentPagination( array( 'tab' ) )|raw}
{{endif}}
{{if $event->commentForm() || $event->locked() || \IPS\Member::loggedIn()->restrict_post || \IPS\Member::loggedIn()->members_bitoptions['unacknowledged_warnings'] || !\IPS\Member::loggedIn()->checkPostsPerDay()}}
<div data-role='replyArea' class='ipsBox i-padding_3 {{if !$event->canComment()}}cTopicPostArea_noSize{{endif}} i-margin-top_3' id='replyForm'>
<div data-role='replyArea' class='ipsComposeAreaWrapper' id='replyForm'>
{{if $event->commentForm()}}
{{if $event->locked()}}
<p class='ipsComposeArea_warning'><i class='fa-solid fa-circle-info'></i> {lang="event_locked_can_comment"}</p>
@@ -3059,13 +3059,12 @@ tr td:not(:first-child):not(.cCalendar_firstDay) .cEvents_ranged .cEvents_event:
/* Listing */
.cEvent__onlineLogo{
inset: auto;
bottom: 5px;
inset-inline-end: 5px;
place-self: end;
margin: 5px;
background: var(--i-background_1);
padding: 8px 12px;
pointer-events: none;
border-start-start-radius: var(--i-box--bo-ra);
border-radius: inherit;
}
.cEvent__onlineLogo svg{
+2 -1
View File
@@ -280,5 +280,6 @@
"5000028": "5.0.0 Beta 2",
"5000029": "5.0.0 Beta 3",
"5000030": "5.0.0 Beta 4",
"5000031": "5.0.0 Beta 5"
"5000031": "5.0.0 Beta 5",
"5000032": "5.0.0 Beta 6"
}
@@ -754,9 +754,7 @@ class view extends Controller
$select = 'calendar_events.*, core_clubs.name';
$sort = 'event_start_date asc';
$location = NULL;
$having = [];
$where = [];
$where[] = ['event_approved=?', 1];
$searchNearLocation = FALSE; // Should results be limited to near the provided location only? If not, we'll just use location to allow sorting.
if( $values = $form->values() )
@@ -840,93 +838,14 @@ class view extends Controller
$startDate = Date::dateTimeToCalendarDate( $values['date']['start'] ?: $today );
$endDate = $values['date']['end'] ? Date::dateTimeToCalendarDate( $values['date']['end'] ) : NULL;
/* Get timezone adjusted versions of start/end time */
$startDateTimezone = Date::parseTime( $startDate->mysqlDatetime(), TRUE );
$endDateTimezone = ( $endDate !== NULL ) ? Date::parseTime( $endDate->mysqlDatetime() ) : NULL;
if ( $member->timezone )
{
$startDateTimezone->setTimezone( new DateTimeZone( 'UTC' ) );
if( $endDateTimezone !== NULL )
{
$endDateTimezone->setTimezone( new DateTimeZone( 'UTC' ) );
}
}
if( $endDate !== NULL AND $startDate == $endDate )
{
$where[] = array(
'(
( event_end_date IS NULL AND DATE( event_start_date ) = ? AND event_all_day=1 )
OR
( event_end_date IS NOT NULL AND DATE( event_start_date ) <= ? AND DATE( event_end_date ) >= ? AND event_all_day=1 )
OR
( event_end_date IS NULL AND event_start_date >= ? AND event_start_date <= ? AND event_all_day=0 )
OR
( event_end_date IS NOT NULL AND event_start_date <= ? AND event_end_date >= ? AND event_all_day=0 )
)',
$startDate->mysqlDatetime( FALSE ),
$endDate->mysqlDatetime( FALSE ),
$startDate->mysqlDatetime( FALSE ),
$startDateTimezone->mysqlDatetime(),
$startDateTimezone->adjust('+1 day')->mysqlDatetime(),
$endDateTimezone->adjust('+1 day')->mysqlDatetime(),
$startDateTimezone->mysqlDatetime()
);
}
elseif( $endDate !== NULL )
{
$where[] = array(
'(
( event_end_date IS NULL AND DATE( event_start_date ) >= ? AND DATE( event_start_date ) <= ? AND event_all_day=1 )
OR
( event_end_date IS NOT NULL AND DATE( event_start_date ) <= ? AND DATE( event_end_date ) >= ? AND event_all_day=1 )
OR
( event_end_date IS NULL AND event_start_date >= ? AND event_start_date <= ? AND event_all_day=0 )
OR
( event_end_date IS NOT NULL AND event_start_date <= ? AND event_end_date >= ? AND event_all_day=0 )
)',
$startDate->mysqlDatetime( FALSE ),
$endDate->mysqlDatetime( FALSE ),
$endDate->mysqlDatetime( FALSE ),
$startDate->mysqlDatetime( FALSE ),
$startDateTimezone->mysqlDatetime(),
$endDateTimezone->mysqlDatetime(),
$endDateTimezone->mysqlDatetime(),
$startDateTimezone->mysqlDatetime()
);
}
else
{
$where[] = array(
"(
( DATE( event_start_date ) >= ? AND event_all_day=1 )
OR
( event_start_date >= ? AND event_all_day=0 )
OR
( event_end_date IS NOT NULL AND DATE( event_start_date ) <= ? AND DATE( event_end_date ) >= ? AND event_all_day=1 )
OR
( event_end_date IS NOT NULL AND event_start_date <= ? AND event_end_date >= ? AND event_all_day=0 )
)",
$startDate->mysqlDatetime( FALSE ),
$startDateTimezone->mysqlDatetime(),
$startDate->mysqlDatetime( FALSE ),
$startDate->mysqlDatetime( FALSE ),
$startDateTimezone->adjust('+1 day')->mysqlDatetime(),
$startDateTimezone->mysqlDatetime()
);
}
$offset = isset( Request::i()->offset ) ? intval( Request::i()->offset ) : 0;
$limit = isset( Request::i()->limit ) ? min( array( intval( Request::i()->limit ), 50 ) ) : 20;
$query = Db::i()->select( $select, 'calendar_events', $where, $sort, array( $offset, $limit ), NULL, implode( " OR ", $having ) );
$query->join( 'calendar_calendars', "event_calendar_id = cal_id" );
$query->join( 'core_clubs', "cal_club_id = id" );
$results = new ActiveRecordIterator( $query, '\IPS\calendar\Event' );
$results = Event::retrieveEvents( $startDate, $endDate, null, null, false, null, null, false, $location, null, $where );
}
$totalCount = count( $results );
$offset = isset( Request::i()->offset ) ? intval( Request::i()->offset ) : 0;
$limit = isset( Request::i()->limit ) ? min( array( intval( Request::i()->limit ), 50 ) ) : 20;
$results = array_slice( $results, $offset, $limit, true );
$mapMarkers = array();
foreach ( $results as $event )
{
@@ -938,18 +857,15 @@ class view extends Controller
if( Request::i()->isAjax() )
{
$countQuery = Db::i()->select( $select, 'calendar_events', $where, NULL, array(), NULL, is_array( $having ) ? implode( " OR ", $having ) : NULL );
$countQuery->join( 'calendar_calendars', "event_calendar_id = cal_id" );
$countQuery->join( 'core_clubs', "cal_club_id = id" );
$output = Theme::i()->getTemplate( 'events' )->searchResults( $results );
Member::loggedIn()->language()->parseOutputForDisplay( $output );
$toReturn = array(
'totalCount' => $countQuery->count(),
'totalCount' => $totalCount,
'count' => count( $results ),
'content' => $output,
'markers' => $mapMarkers,
'markerCount' => count( $mapMarkers ),
'blurb' => '', // @todo
'online' => ( Request::i()->show == 'online' )
);
@@ -0,0 +1,22 @@
{
"id": 5000032,
"name": "5.0.0 Beta 6",
"steps": {
"queries": false,
"lang": false,
"theme": true,
"themeeditor": false,
"javascript": true,
"emailTemplates": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,14 @@
{
"files": {
"added": [],
"edited": [
"calendar\/front\/controllers\/overview\/ips.overview.search.js"
],
"removed": []
},
"orders": {
"added": [],
"edited": [],
"removed": []
}
}
@@ -0,0 +1,21 @@
{
"html": {
"added": [],
"edited": [
"front\/view\/comments"
],
"removed": []
},
"css": {
"added": [],
"edited": [
"front\/calendar.css"
],
"removed": []
},
"resources": {
"added": [],
"edited": [],
"removed": []
}
}
@@ -2004,10 +2004,11 @@ class Event extends Item implements Embeddable,
/**
* Create Notification
*
* @param string|NULL $extra Additional data
* @param mixed $extra Additional data
* @param Comment|null $comment
* @return Notification
*/
protected function createNotification( ?string $extra=NULL ) : Notification
public function createNotification( mixed $extra=NULL, ?Comment $comment=null ): Notification
{
// New content is sent with itself as the item as we deliberately do not group notifications about new content items. Unlike comments where you're going to read them all - you might scan the notifications list for topic titles you're interested in
return new Notification( Application::load( 'calendar' ), 'new_content', $this, array( $this ) );
@@ -2080,12 +2081,13 @@ class Event extends Item implements Embeddable,
* @param bool $skipPermissions Skip permission checks (used by REST API to fetch all events which are filtered on later)
* @param array|null $location Array of item lat and long
* @param int|null $online Online events?
* @param array|null $where Additional where clause
* @return ActiveRecordIterator|array
* @see \IPS\Content\_Item::getItemsWithPermission()
*/
public static function retrieveEvents( Date $startDate, Date $endDate=NULL, Calendar|array $calendar=NULL, int $limit=NULL, bool $formatEvents=TRUE, Member $member=NULL, Venue $venue=NULL, bool $skipPermissions=FALSE, array $location = NULL, ?int $online = NULL ): ActiveRecordIterator|array
public static function retrieveEvents( Date $startDate, Date $endDate=NULL, Calendar|array $calendar=NULL, int $limit=NULL, bool $formatEvents=TRUE, Member $member=NULL, Venue $venue=NULL, bool $skipPermissions=FALSE, array $location = NULL, ?int $online = NULL, ?array $where=null ): ActiveRecordIterator|array
{
$where = array();
$where = is_array( $where ) ? $where : array();
if ( $calendar !== NULL )
{
+38 -37
View File
@@ -816,36 +816,36 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $comment->getVi
</article>]]></template>
<template template_key="database_display_comments" template_title="comments" template_desc="" template_location="database" template_group="display" template_params="$record" template_app="" template_type="template"><![CDATA[<div data-controller='core.front.core.commentFeed, core.front.core.ignoredComments' {{if settings.auto_polling_enabled}}data-autoPoll{{endif}} data-commentsType='comments' data-baseURL='{$record->url()}' {{if $record->isLastPage()}}data-lastPage{{endif}} data-feedID='{$record->feedId}' id='comments'>
{template="featuredComments" group="global" app="core" params="$record->featuredComments(), $record->url()->setQueryString('tab', 'comments')->setQueryString('recommended', 'comments')"}
{{if $record->commentPageCount() > 1}}
<div class='ipsButtonBar'>
{template="featuredComments" group="global" app="core" params="$record->featuredComments(), $record->url()->setQueryString('tab', 'comments')->setQueryString('recommended', 'comments'), 'recommended_replies', '__defart_comment', false"}
<div class='ipsButtonBar ipsButtonBar--top'>
{{if $record->commentPageCount() > 1}}
<div class='ipsButtonBar__pagination'>{$record->commentPagination( array('tab') )|raw}</div>
<div class='ipsButtonBar__end'>{template="commentMultimodHeader" app="core" group="global" params="$record, '#comments'"}</div>
</div>
{{endif}}
{{endif}}
<div class='ipsButtonBar__end'>{template="commentMultimodHeader" app="core" group="global" params="$record, '#comments'"}</div>
</div>
<div data-role='commentFeed' data-controller='core.front.core.moderation'>
<form action="{$record->url()->csrf()->setQueryString( 'do', 'multimodComment' )->setPage('page',\IPS\Request::i()->page)}" method="post" data-ipsPageAction data-role='moderationTools'>
{{if \count( $record->comments( NULL, NULL, 'date', 'asc', NULL, NULL, NULL, NULL, FALSE, isset( \IPS\Request::i()->showDeleted ) ) )}}
<form action="{$record->url()->csrf()->setQueryString( 'do', 'multimodComment' )->setPage('page',\IPS\Request::i()->page)}" method="post" data-ipsPageAction data-role='moderationTools'>
{{if \count( $record->comments( NULL, NULL, 'date', 'asc', NULL, NULL, NULL, NULL, FALSE, isset( \IPS\Request::i()->showDeleted ) ) )}}
{{$commentCount=0; $timeLastRead = $record->timeLastRead(); $lined = FALSE;}}
{{foreach $record->comments( NULL, NULL, 'date', 'asc', NULL, NULL, NULL, NULL, FALSE, isset( \IPS\Request::i()->showDeleted ) ) as $comment}}
{{if !$lined and $timeLastRead and $timeLastRead->getTimestamp() < $comment->mapped('date')}}
{{if $lined = TRUE and $commentCount}}
<hr class="ipsUnreadBar">
{{$commentCount=0; $timeLastRead = $record->timeLastRead(); $lined = FALSE;}}
{{foreach $record->comments( NULL, NULL, 'date', 'asc', NULL, NULL, NULL, NULL, FALSE, isset( \IPS\Request::i()->showDeleted ) ) as $comment}}
{{if !$lined and $timeLastRead and $timeLastRead->getTimestamp() < $comment->mapped('date')}}
{{if $lined = TRUE and $commentCount}}
<hr class="ipsUnreadBar">
{{endif}}
{{endif}}
{{endif}}
{{$commentCount++;}}
{$comment->html()|raw}
{{endforeach}}
{{$commentCount++;}}
{$comment->html()|raw}
{{endforeach}}
{{else}}
<p class='ipsEmptyMessage' data-role='noComments'>{lang="no_comments"}</p>
{{endif}}
{template="commentMultimod" app="core" group="global" params="$record"}
</form>
{{else}}
<p class='ipsEmptyMessage' data-role='noComments'>{lang="no_comments"}</p>
{{endif}}
{template="commentMultimod" app="core" group="global" params="$record"}
</form>
</div>
{{if $record->commentPageCount() > 1}}
<div class='ipsButtonBar ipsButtonBar--bottom'>
@@ -880,7 +880,7 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $comment->getVi
<p>{$line|raw}</p>
{{endforeach}}]]></template>
<template template_key="database_display_record" template_title="record" template_desc="" template_location="database" template_group="display" template_params="$record, $commentsAndReviews, $updateForm=NULL, $nextUnread=NULL" template_app="" template_type="template"><![CDATA[{template="assignmentHeader" app="core" group="global" params="$record"}
<div class="ipsBox ipsPull">
<section class="ipsBox ipsBox--record ipsPull">
<header class="ipsPageHeader ipsPageHeader--database-record">
{{if $record->showRecordImage()}}
{$record->coverPhoto()|raw}
@@ -1000,9 +1000,9 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $comment->getVi
{{endif}}
</div>
</article>
</div>
</section>
<div class='ipsBox i-padding_2 ipsPull ipsResponsive_showPhone'>
<section class='ipsBox ipsBox--pageActions i-padding_2 ipsPull ipsResponsive_showPhone'>
<div class='ipsPageActions'>
{{if !$record->container()->disable_sharelinks}}
{template="shareButton" app="core" group="sharelinks" params="$record"}
@@ -1010,12 +1010,11 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $comment->getVi
{{if \IPS\Application::appIsEnabled('cloud')}}
{template="spam" app="cloud" group="spam" params="$record"}
{{endif}}
{template="follow" app="core" group="global" params="'cms', 'records'.$record::$customDatabaseId, $record->primary_id_field, $record->followersCount()"}
</div>
</div>
</section>
<div class='ipsPager'>
<nav class='ipsPager'>
<div class="ipsPager_prev">
{{if $record::database()->use_categories}}
<a href="{$record->container()->url()}" title="{lang="cms_back_to_category_with_title" sprintf="$record->container()->_title"}" rel="up">
@@ -1035,17 +1034,17 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $comment->getVi
</a>
</div>
{{endif}}
</div>
</nav>
{{if $commentsAndReviews}}
<h2 class='ipsHide'>{lang="user_feedback"}</h2>
<div class='ipsBox ipsPull' id="replies">
<div class='ipsBox ipsBox--commentsAndReviews ipsPull' id="replies">
{$commentsAndReviews|raw}
</div>
{{endif}}
{{if $updateForm}}
<div class='ipsBox ipsPull'>
<div class='ipsBox ipsBox--updateForm ipsPull'>
<h2 class='ipsBox__header'>{lang="cms_front_update_fields" sprintf="$record::database()->recordWord( 1 )"}</h2>
{$updateForm|raw}
</div>
@@ -1270,11 +1269,13 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $review->getVie
{{endif}}]]></template>
<template template_key="database_display_reviews" template_title="reviews" template_desc="" template_location="database" template_group="display" template_params="$record" template_app="" template_type="template"><![CDATA[<div data-controller='core.front.core.commentFeed' {{if settings.auto_polling_enabled}}data-autoPoll{{endif}} data-commentsType='reviews' data-baseURL='{$record->url()}' {{if $record->isLastPage('reviews')}}data-lastPage{{endif}} data-feedID='{$record->reviewFeedId}' id='reviews'>
{{if $record->reviewForm()}}
{{if $record->locked()}}
<strong class='i-color_warning'><i class='fa-solid fa-circle-info'></i> {lang="item_locked_can_review"}</strong>
{{endif}}
<div id='elRecordReviewForm'>
{$record->reviewForm()|raw}
<div class="ipsComposeAreaWrapper">
{{if $record->locked()}}
<strong class='i-color_warning'><i class='fa-solid fa-circle-info'></i> {lang="item_locked_can_review"}</strong>
{{endif}}
<div id='elRecordReviewForm'>
{$record->reviewForm()|raw}
</div>
</div>
{{else}}
{{if $record->hasReviewed()}}
+19 -19
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<javascript app="cms">
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/blocks" javascript_name="ips.blocks.form.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000100"><![CDATA[/**
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/blocks" javascript_name="ips.blocks.form.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000100"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -67,7 +67,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="cms" javascript_location="front" javascript_path="controllers/blocks" javascript_name="ips.blocks.navigation.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000050"><![CDATA[/**
<file javascript_app="cms" javascript_location="front" javascript_path="controllers/blocks" javascript_name="ips.blocks.navigation.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000050"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -111,7 +111,7 @@
});
}(jQuery, _));]]></file>
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/databases" javascript_name="ips.databases.download.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000150">/**
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/databases" javascript_name="ips.databases.download.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000150">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -156,7 +156,7 @@
}
});
}(jQuery, _));</file>
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/databases" javascript_name="ips.databases.form.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000150"><![CDATA[/**
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/databases" javascript_name="ips.databases.form.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000150"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -232,7 +232,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="cms" javascript_location="front" javascript_path="controllers/external" javascript_name="ips.external.communication.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000150"><![CDATA[/**
<file javascript_app="cms" javascript_location="front" javascript_path="controllers/external" javascript_name="ips.external.communication.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000150"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -367,7 +367,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/fields" javascript_name="ips.fields.form.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000200"><![CDATA[/**
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/fields" javascript_name="ips.fields.form.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000200"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -457,7 +457,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/media" javascript_name="ips.media.main.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000300"><![CDATA[/**
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/media" javascript_name="ips.media.main.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000300"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -1096,7 +1096,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/pages" javascript_name="ips.pages.embed.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000250"><![CDATA[/**
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/pages" javascript_name="ips.pages.embed.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000250"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -1131,7 +1131,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/pages" javascript_name="ips.pages.form.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000250"><![CDATA[/**
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/pages" javascript_name="ips.pages.form.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000250"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -1253,7 +1253,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="cms" javascript_location="front" javascript_path="controllers/records" javascript_name="ips.records.form.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000100"><![CDATA[/**
<file javascript_app="cms" javascript_location="front" javascript_path="controllers/records" javascript_name="ips.records.form.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000100"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -1365,7 +1365,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="cms" javascript_location="front" javascript_path="controllers/records" javascript_name="ips.records.revisions.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000100">/**
<file javascript_app="cms" javascript_location="front" javascript_path="controllers/records" javascript_name="ips.records.revisions.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000100">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -1420,7 +1420,7 @@
}
});
}(jQuery, _));</file>
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/templates" javascript_name="ips.templates.addForm.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000050">/**
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/templates" javascript_name="ips.templates.addForm.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000050">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -1470,7 +1470,7 @@
}
});
}(jQuery, _));</file>
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/templates" javascript_name="ips.templates.conflict.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000050">/**
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/templates" javascript_name="ips.templates.conflict.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000050">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -1542,7 +1542,7 @@
}
});
}(jQuery, _));</file>
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/templates" javascript_name="ips.templates.fileEditor.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000050"><![CDATA[/**
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/templates" javascript_name="ips.templates.fileEditor.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000050"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -2503,7 +2503,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/templates" javascript_name="ips.templates.fileList.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000050"><![CDATA[/**
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/templates" javascript_name="ips.templates.fileList.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000050"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -2795,7 +2795,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/templates" javascript_name="ips.templates.main.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000050"><![CDATA[/**
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/templates" javascript_name="ips.templates.main.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000050"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -2964,7 +2964,7 @@
});
}(jQuery, _));]]></file>
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/templates" javascript_name="ips.templates.variablesDialog.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000050">/**
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/templates" javascript_name="ips.templates.variablesDialog.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000050">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -3009,7 +3009,7 @@
}
});
}(jQuery, _));</file>
<file javascript_app="cms" javascript_location="admin" javascript_path="templates" javascript_name="ips.templates.media.js" javascript_type="template" javascript_version="5000031" javascript_position="1000050"><![CDATA[ips.templates.set( 'templates.media.grid', "\
<file javascript_app="cms" javascript_location="admin" javascript_path="templates" javascript_name="ips.templates.media.js" javascript_type="template" javascript_version="5000032" javascript_position="1000050"><![CDATA[ips.templates.set( 'templates.media.grid', "\
<ul class='ipsGrid ipsGrid--pages-media'>\
{{{contents}}}\
</ul>\
@@ -3026,7 +3026,7 @@ ips.templates.set( 'templates.media.noSearchResults', "\
{{#lang}}mediaNoResults{{/lang}}\
</div>\
");]]></file>
<file javascript_app="cms" javascript_location="admin" javascript_path="templates" javascript_name="ips.templates.templates.js" javascript_type="template" javascript_version="5000031" javascript_position="1000050"><![CDATA[/* TEMPLATE EDITOR TEMPLATES */
<file javascript_app="cms" javascript_location="admin" javascript_path="templates" javascript_name="ips.templates.templates.js" javascript_type="template" javascript_version="5000032" javascript_position="1000050"><![CDATA[/* TEMPLATE EDITOR TEMPLATES */
/* TEMPLATECEPTION */
ips.templates.set('templates.editor.newTab', " \
<a href='#' class='ipsTabs__tab' id='ipsTabs_elTemplateEditor_tabbar_tab_{{fileid}}' role='tab' aria-controls='ipsTabs_elTemplateEditor_tabbar_tab_{{fileid}}_panel' aria-selected='false' data-fileid='{{fileid}}' data-location='{{location}}'>{{title}} <span data-action='closeTab'><i class='fa-solid fa-xmark'></i></span></a>\
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<language>
<app key="cms" version="5000031">
<app key="cms" version="5000032">
<word key="__app_cms" js="0">Pages</word>
<word key="menutab__cms" js="0">Pages</word>
<word key="menutab__cms_icon" js="0">file</word>
+2 -1
View File
@@ -598,5 +598,6 @@
"5000028": "5.0.0 Beta 2",
"5000029": "5.0.0 Beta 3",
"5000030": "5.0.0 Beta 4",
"5000031": "5.0.0 Beta 5"
"5000031": "5.0.0 Beta 5",
"5000032": "5.0.0 Beta 6"
}
@@ -0,0 +1,20 @@
{
"1": {
"method": "addColumn",
"params": [
"cms_databases",
{
"name": "database_comments_perpage",
"type": "TINYINT",
"length": null,
"decimals": null,
"values": null,
"allow_null": false,
"default": 0,
"comment": "",
"unsigned": false,
"auto_increment": false
}
]
}
}
@@ -0,0 +1,22 @@
{
"id": 5000032,
"name": "5.0.0 Beta 6",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeeditor": false,
"javascript": false,
"emailTemplates": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
+34 -9
View File
@@ -25,7 +25,6 @@ use IPS\cms\Records\Revisions;
use IPS\Content\Anonymous;
use IPS\Content\Assignable;
use IPS\Content\Comment;
use IPS\Content\ContentMenuLink;
use IPS\Content\Embeddable;
use IPS\Content\Filter;
use IPS\Content\Followable;
@@ -53,6 +52,7 @@ use IPS\Events\Event;
use IPS\File;
use IPS\forums\Topic;
use IPS\forums\Topic\Post;
use IPS\Helpers\CoverPhoto;
use IPS\Helpers\Form\Checkbox;
use IPS\Helpers\Form\CheckboxSet;
use IPS\Helpers\Form\Date;
@@ -60,7 +60,6 @@ use IPS\Helpers\Form\Text;
use IPS\Helpers\Form\TextArea;
use IPS\Helpers\Form\Upload;
use IPS\Helpers\Form\YesNo;
use IPS\Helpers\Menu;
use IPS\Helpers\Table\Content as TableHelper;
use IPS\Http\Url;
use IPS\Http\Url\Friendly;
@@ -73,7 +72,6 @@ use IPS\Output;
use IPS\Patterns\ActiveRecordIterator;
use IPS\Request;
use IPS\Settings;
use IPS\Text\Parser;
use IPS\Theme;
use LogicException;
use OutOfRangeException;
@@ -90,7 +88,6 @@ use function is_array;
use function is_int;
use function is_numeric;
use function is_string;
use function round;
use function strtolower;
use const IPS\ENFORCE_ACCESS;
@@ -737,7 +734,7 @@ class Records extends Item implements
{
if ( Settings::i()->edit_log == 2 )
{
$formElements['record_edit_reason'] = new Text( 'record_edit_reason', $item?->record_edit_reason, FALSE, array( 'maxLength' => 255 ) );
$formElements['record_edit_reason'] = new Text( 'record_edit_reason', $item->record_edit_reason, FALSE, array( 'maxLength' => 255 ) );
}
if ( Member::loggedIn()->group['g_append_edit'] )
{
@@ -1654,7 +1651,7 @@ class Records extends Item implements
}
}
}
else
elseif( !empty( $fieldValues[ $fieldName ] ) )
{
$obj = File::get( 'cms_Records', $fieldValues[ $fieldName ] );
if ( $obj->isImage() )
@@ -2021,6 +2018,12 @@ class Records extends Item implements
$this->record_last_comment_name = $member->name;
}
}
/* Did we change the title? Update the URL */
if( !$new and isset( $this->changed[ static::$databaseColumnMap['title'] ] ) and !isset( $this->changed['record_dynamic_furl'] ) )
{
$this->record_dynamic_furl = Friendly::seoTitle( $this->_title );
}
parent::save();
@@ -2804,8 +2807,12 @@ class Records extends Item implements
/* Store the real count so it is not accidentally written as the actual value */
$realCount = $topic->posts;
/* Compensate for the first post (which is actually the record) */
$topic->posts = ( $topic->posts - 1 ) > 0 ? $topic->posts - 1 : 0;
/* If we are NOT featuring the first post in the topics, then we need to
compensate for the first post (which is actually the record) */
if ( !Member::loggedIn()->getLayoutValue( 'forum_topic_view_firstpost' ) )
{
$topic->posts = ( $topic->posts - 1 ) > 0 ? $topic->posts - 1 : 0;
}
/* Get our page count considering all of that */
$this->recordCommentPageCount = $topic->commentPageCount();
@@ -3844,7 +3851,25 @@ class Records extends Item implements
{
/* @var Fields $fieldClass */
$fieldClass = 'IPS\cms\Fields' . static::$customDatabaseId;
return $fieldClass::fixedFieldFormShow( 'record_image' );
return $fieldClass::fixedFieldFormShow( 'record_image', 'perm_view' );
}
/**
* Cover Photo
*
* @return mixed
*/
public function coverPhoto(): mixed
{
$photo = parent::coverPhoto();
if( $photo instanceof CoverPhoto )
{
/* @var Fields $fieldClass */
$fieldClass = 'IPS\cms\Fields' . static::$customDatabaseId;
$photo->editable = $fieldClass::fixedFieldFormShow( 'record_image' );
}
return $photo;
}
/**
+2 -2
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<javascript app="convert">
<file javascript_app="convert" javascript_location="admin" javascript_path="controllers/convert" javascript_name="ips.convert.menu.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000100">/**
<file javascript_app="convert" javascript_location="admin" javascript_path="controllers/convert" javascript_name="ips.convert.menu.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000100">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -45,7 +45,7 @@
}
} );
}(jQuery, _));</file>
<file javascript_app="convert" javascript_location="admin" javascript_path="controllers/forms" javascript_name="ips.forms.reactionmapper.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000050">/**
<file javascript_app="convert" javascript_location="admin" javascript_path="controllers/forms" javascript_name="ips.forms.reactionmapper.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000050">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<language>
<app key="convert" version="5000031">
<app key="convert" version="5000032">
<word key="__app_convert" js="0">Converter</word>
<word key="menu__convert_manage" js="0">Conversions</word>
<word key="menu__convert_manage_manage_start" js="0">Start New Conversion</word>
+2 -1
View File
@@ -280,5 +280,6 @@
"5000028": "5.0.0 Beta 2",
"5000029": "5.0.0 Beta 3",
"5000030": "5.0.0 Beta 4",
"5000031": "5.0.0 Beta 5"
"5000031": "5.0.0 Beta 5",
"5000032": "5.0.0 Beta 6"
}
@@ -0,0 +1,22 @@
{
"id": 5000032,
"name": "5.0.0 Beta 6",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeeditor": false,
"javascript": false,
"emailTemplates": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
File diff suppressed because it is too large. Load diff
+5 -4
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<language>
<app key="core" version="5000031">
<app key="core" version="5000032">
<word key="__app_core" js="0">System</word>
<word key="__indefart_personal_conversation" js="0">a personal conversation</word>
<word key="__indefart_personal_conversation_message" js="0">a message in a personal conversation</word>
@@ -3500,6 +3500,7 @@
<word key="modperms__core_Reports" js="0">Reports</word>
<word key="can_view_reports" js="0">Can view reports?</word>
<word key="can_manage_sidebar" js="0">Can use Block Manager?</word>
<word key="can_use_theme_editor" js="0">Can use Theme Editor?</word>
<word key="can_moderator_be_ignored" js="0">Can be ignored?</word>
<word key="can_moderator_be_ignored_desc" js="0"><![CDATA[Additional to this moderator restriction, you can also disallow people to ignore members via a <a href='{internal.admin.app=core&module=members&controller=groups&searchResult=can_be_ignored}'>group setting.</a>]]></word>
<word key="add_moderator" js="0">Add Moderator</word>
@@ -7190,9 +7191,9 @@
<word key="profile_complete_no_add" js="0">All available profile completion steps have been used. To create new profile completion steps, please delete existing steps, or edit them to remove methods.</word>
<word key="acplog__quick_register_enabled" js="0">Quick registration enabled</word>
<word key="acplog__profile_step_added" js="0">Profile step added: %s</word>
<word key="enhancements__core_FacebookPixel" js="0">Facebook Pixel</word>
<word key="enhancements__core_FacebookPixel_desc" js="0">The Facebook pixel is used to report conversions, optimize advert delivery, build audiences and get rich insights about how people are using your website.</word>
<word key="fb_pixel_id_req" js="0">You need to enter your Facebook Pixe ID</word>
<word key="enhancements__core_FacebookPixel" js="0">Meta Pixel</word>
<word key="enhancements__core_FacebookPixel_desc" js="0">The Meta pixel is used to report conversions, optimize advert delivery, build audiences and get rich insights about how people are using your website.</word>
<word key="fb_pixel_id_req" js="0">You need to enter your Meta Pixel ID</word>
<word key="fb_pixel_id" js="0">Pixel ID</word>
<word key="fb_pixel_enabled" js="0">Enable</word>
<word key="fb_pixel_delay" js="0">Delay</word>
+12 -30
View File
@@ -24340,6 +24340,18 @@
"auto_increment": false,
"binary": false
},
"chart_favorite": {
"name": "chart_favorite",
"type": "TINYINT",
"length": null,
"decimals": null,
"values": null,
"allow_null": false,
"default": 0,
"comment": "",
"unsigned": false,
"auto_increment": false
},
"chart_timescale": {
"name": "chart_timescale",
"type": "ENUM",
@@ -25898,36 +25910,6 @@
"zerofill": false,
"auto_increment": false,
"binary": false
},
"chart_favorite": {
"name": "chart_favorite",
"type": "TINYINT",
"length": null,
"decimals": null,
"values": null,
"allow_null": false,
"default": 0,
"comment": "",
"unsigned": false,
"auto_increment": false
},
"chart_timescale": {
"name": "chart_timescale",
"type": "ENUM",
"length": null,
"decimals": null,
"values": [
"hourly",
"daily",
"weekly",
"monthly",
"none"
],
"allow_null": true,
"default": null,
"comment": "",
"unsigned": false,
"auto_increment": false
}
},
"indexes": {
+158 -168
View File
@@ -5763,7 +5763,7 @@
<li>
<a href='#' class='ipsButton ipsButton--soft ipsButton--small' data-ipsMenu id='elEditorAttach_media{expression="md5($name)"}'>{lang="editor_attach_other"} <i class='fa-solid fa-caret-down'></i></a>
<ul class='ipsMenu ipsMenu_auto ipsHide' id='elEditorAttach_media{expression="md5($name)"}_menu'>
<li class='ipsMenu_item'><a href='#' data-ipsDialog data-ipsDialog-fixed data-ipsDialog-forceReload data-ipsDialog-title='{lang="editor_insert_existing_file"}' data-ipsDialog-url="{url="app=core&module=system&controller=editor&do=myMedia&postKey={$editor}&editorId={$name}" csrf="1"}">{lang="editor_insert_existing_file"}</a></li>
<li class='ipsMenu_item'><a href='#' data-ipsDialog data-ipsDialog-fixed data-ipsDialog-forceReload data-ipsDialog-title='{lang="editor_insert_existing_file"}' data-ipsDialog-url="{url="app=core&module=system&controller=editor&do=myMedia&postKey={$editor}&editorId={$name}" csrf="1"}">{lang="editor_insert_existing_file"}</a>
</ul>
</li>
{{endif}}
@@ -6636,7 +6636,7 @@
{{if !\IPS\Request::i()->isAjax() }}</div>{{endif}}]]></template>
<template template_group="forms" template_name="postingInformation" template_data="$guestPostBeforeRegister, $modQueued, $standalone=false" template_location="front" template_app="core"><![CDATA[{{if !member.member_id}}
{{if !$standalone}}
<div class='cGuestTeaser'>
<div class='cGuestTeaser i-margin-bottom_3'>
<h2 class='ipsTitle ipsTitle--h3'>{lang="guest_post_header"}</h2>
{{endif}}
<p>
@@ -6651,7 +6651,6 @@
{{endif}}
</p>
{{if !$standalone}}
<hr class="ipsHr i-margin-block_3">
</div>
{{endif}}
{{elseif $modQueued}}
@@ -6889,37 +6888,37 @@
{{endforeach}}
</ul>
</form>]]></template>
<template template_group="forms" template_name="reviewTemplate" template_data="$id, $action, $elements, $hiddenValues, $actionButtons, $uploadField, $class=''" template_location="front" template_app="core"><![CDATA[<div class='ipsComposeArea i-padding_3' {{if \IPS\Member::loggedIn()->member_id}}data-controller='core.front.core.reviewForm'{{endif}}>
<div class='ipsComposeArea__photo'>{template="userPhoto" group="global" app="core" params="\IPS\Member::loggedIn(), 'fluid'"}</div>
<div class='ipsComposeArea_editor'>
<form accept-charset='utf-8' class="ipsFormWrap ipsFormWrap--review" action="{$action->setQueryString( '_review', 1 )}" method="post" {{if $uploadField}}enctype="multipart/form-data"{{endif}}>
<input type="hidden" name="{$id}_submitted" value="1">
{{foreach $hiddenValues as $k => $v}}
<input type="hidden" name="{$k}" value="{$v}">
{{endforeach}}
{{if $uploadField}}
<input type="hidden" name="MAX_FILE_SIZE" value="{$uploadField}">
<input type="hidden" name="plupload" value="{expression="md5( mt_rand() )"}">
{{endif}}
{{if !isset( \IPS\Request::i()->_review ) and \IPS\Member::loggedIn()->member_id}}
<div data-role='reviewIntro'>
<h3 class="i-margin-bottom_2"><strong class="i-color_hard i-font-weight_600">{lang="review_intro_1" sprintf="\IPS\Member::loggedIn()->name"}</strong> <span class='i-color_soft i-font-weight_500'>{lang="review_intro_2"}</span></h3>
<a href='#' class='ipsButton ipsButton--primary ipsButton--small ipsJS_show' data-action='writeReview'><i class="fa-regular fa-pen-to-square"></i><span>{lang="write_a_review"}</span></a>
</div>
{{endif}}
<ul class='ipsForm ipsForm--vertical ipsForm--review {{if !isset( \IPS\Request::i()->_review ) and \IPS\Member::loggedIn()->member_id}}ipsJS_hide{{endif}}' data-role='reviewForm'>
{{foreach $elements as $collection}}
{{foreach $collection as $input}}
{$input|raw}
{{endforeach}}
<template template_group="forms" template_name="reviewTemplate" template_data="$id, $action, $elements, $hiddenValues, $actionButtons, $uploadField, $class=''" template_location="front" template_app="core"><![CDATA[<div class="ipsComposeAreaWrapper">
<div class='ipsComposeArea ipsComposeArea--review' {{if \IPS\Member::loggedIn()->member_id}}data-controller='core.front.core.reviewForm'{{endif}}>
<div class='ipsComposeArea__photo'>{template="userPhoto" group="global" app="core" params="\IPS\Member::loggedIn(), 'fluid'"}</div>
<div class='ipsComposeArea_editor'>
<form accept-charset='utf-8' class="ipsFormWrap ipsFormWrap--review" action="{$action->setQueryString( '_review', 1 )}" method="post" {{if $uploadField}}enctype="multipart/form-data"{{endif}}>
<input type="hidden" name="{$id}_submitted" value="1">
{{foreach $hiddenValues as $k => $v}}
<input type="hidden" name="{$k}" value="{$v}">
{{endforeach}}
<li class='ipsFieldRow'>
<div class='ipsFieldRow__content'>
<button type='submit' class='ipsButton ipsButton--primary'>{lang="add_review"}</button>
{{if $uploadField}}
<input type="hidden" name="MAX_FILE_SIZE" value="{$uploadField}">
<input type="hidden" name="plupload" value="{expression="md5( mt_rand() )"}">
{{endif}}
{{if !isset( \IPS\Request::i()->_review ) and \IPS\Member::loggedIn()->member_id}}
<div data-role='reviewIntro'>
<h3 class="i-margin-bottom_2"><strong class="i-color_hard i-font-weight_600">{lang="review_intro_1" sprintf="\IPS\Member::loggedIn()->name"}</strong> <span class='i-color_soft i-font-weight_500'>{lang="review_intro_2"}</span></h3>
<button type="button" class='ipsButton ipsButton--primary ipsButton--small' data-action='writeReview'><i class="fa-regular fa-pen-to-square"></i><span>{lang="write_a_review"}</span></button>
</div>
</li>
</ul>
</form>
{{endif}}
<ul class='ipsForm ipsForm--vertical ipsForm--review' data-role='reviewForm' {{if !isset( \IPS\Request::i()->_review ) and \IPS\Member::loggedIn()->member_id}}hidden{{endif}}>
{{foreach $elements as $collection}}
{{foreach $collection as $input}}
{$input|raw}
{{endforeach}}
{{endforeach}}
<li class='ipsSubmitRow'>
<button type='submit' class='ipsButton ipsButton--primary'>{lang="add_review"}</button>
</li>
</ul>
</form>
</div>
</div>
</div>]]></template>
<template template_group="forms" template_name="reviewUnavailable" template_data="$lang, $warnings=array(), $ends=NULL" template_location="front" template_app="core"><![CDATA[
@@ -6970,8 +6969,7 @@
{$desc|raw}
{$warning|raw}
{{if $error}}
<br>
<span class="i-color_warning">{lang="$error"}</span>
<div class="ipsFieldRow__warning">{lang="$error"}</div>
{{endif}}
</div>
{{else}}
@@ -6987,8 +6985,7 @@
{$desc|raw}
{$warning|raw}
{{if $error}}
<br>
<span class="i-color_warning">{lang="$error"}</span>
<div class="ipsFieldRow__warning">{lang="$error"}</div>
{{endif}}
</div>
{{endif}}
@@ -7786,7 +7783,7 @@
<li class='ipsData__item'>
<div class='ipsData__main'>
<div class='i-flex i-align-items_center i-justify-content_space-between'>
<a href='{$item->url()->setQueryString( array( 'do' => 'findComment', 'comment' => $day['commentId'] ) )}' class='i-font-weight_600'>{datetime="$day['date']"}</a>
<a href='{$item->shareableUrl( $day['commentId'] )}' class='i-font-weight_600'>{datetime="$day['date']"}</a>
<span class='i-color_soft'>{lang="num_comments" pluralize="$day['count']"}</span>
</div>
</div>
@@ -9380,40 +9377,42 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $comment->getVi
{{endif}}]]></template>
<template template_group="global" template_name="featuredComment" template_data="$comment, $id, $commentLang='__defart_comment'" template_location="front" template_app="core"><![CDATA[{{if isset( $comment['comment'] )}}
{{$idField = $comment['comment']::$databaseColumnId;}}
<div class='i-padding_3 ipsEntry ipsEntry--recommended' data-commentID='{$id}'>
<div class='ipsColumns i-gap_3'>
<div class='ipsColumns__primary'>
<div class="ipsPhotoPanel i-margin-bottom_2">
<div class='ipsEntry ipsEntry--simple ipsEntry--featuredComment' data-commentID='{$id}'>
<header class="ipsEntry__header">
<div class="ipsEntry__header-align">
<div class="ipsPhotoPanel">
{template="userPhoto" app="core" group="global" params="$comment['comment']->author(), 'fluid', $comment['comment']->warningRef()"}
<div class="ipsPhotoPanel__text">
<div class="ipsPhotoPanel__primary">{template="userLink" app="core" group="global" params="$comment['comment']->author(), $comment['comment']->warningRef()"}</div>
<div class="ipsPhotoPanel__secondary"><a href="{$comment['comment']->url()}" title='{lang="go_to_this_comment" sprintf="\IPS\Member::loggedIn()->language()->get( $commentLang )"}' rel="nofollow" data-action='goToComment'>{$comment['comment']->dateLine()|raw}</a></div>
</div>
</div>
<div class='ipsRichText ipsTruncate_2'>{$comment['comment']->truncated( TRUE )|raw}</div>
{{if $comment['note']}}
<div class='ipsEntry__recommendedNote'>
<p class='ipsRichText'>{$comment['note']}</p>
{{if isset( $comment['featured_by'] )}}
<p class='i-color_soft i-margin-top_2 i-link-color_inherit'>{lang="recommended_by" htmlsprintf="$comment['featured_by']->link()"}</p>
{{endif}}
</div>
{{elseif isset( $comment['featured_by'] )}}
{lang="recommended_by" htmlsprintf="$comment['featured_by']->link()"}
{{endif}}
</div>
<div class='i-basis_auto i-align-self_center'>
{{if \IPS\IPS::classUsesTrait( $comment['comment'], 'IPS\Content\Reactable' ) and settings.reputation_enabled}}
</header>
<div class='ipsEntry__post'>
<div class='ipsRichText ipsTruncate_2'>{$comment['comment']->truncated( TRUE )|raw}</div>
{{if \IPS\IPS::classUsesTrait( $comment['comment'], 'IPS\Content\Reactable' ) and settings.reputation_enabled}}
<div class='i-margin-top_2 i-flex'>
{template="reactionOverview" group="global" app="core" params="$comment['comment']"}
{{endif}}
</div>
</div>
{{endif}}
{{if $comment['note']}}
<div class='ipsEntry__recommendedNote'>
<p>{$comment['note']}</p>
{{if isset( $comment['featured_by'] )}}
<p class='i-font-style_italic i-color_soft i-margin-top_1 i-link-color_inherit'>{lang="recommended_by" htmlsprintf="$comment['featured_by']->link()"}</p>
{{endif}}
</div>
{{elseif isset( $comment['featured_by'] )}}
{lang="recommended_by" htmlsprintf="$comment['featured_by']->link()"}
{{endif}}
</div>
</div>
{{endif}}]]></template>
<template template_group="global" template_name="featuredComments" template_data="$comments, $url, $titleLang='recommended_replies', $commentLang='__defart_comment'" template_location="front" template_app="core"><![CDATA[
<section data-controller='core.front.core.recommendedComments' data-url='{$url}' class='ipsBox ipsRecommendedComments {{if !\count( $comments )}}ipsHide{{endif}}'>
<template template_group="global" template_name="featuredComments" template_data="$comments, $url, $titleLang='recommended_replies', $commentLang='__defart_comment', $ipsBox=true" template_location="front" template_app="core"><![CDATA[
<section data-controller='core.front.core.recommendedComments' data-url='{$url}' class='{{if $ipsBox}}ipsBox ipsBox--featuredComments{{endif}} ipsRecommendedComments {{if !\count( $comments )}}ipsHide{{endif}}'>
<div data-role="recommendedComments">
<header class='ipsBox__header'>
<header class='{{if $ipsBox}}ipsBox__header{{else}}ipsTitle ipsTitle--h5 i-padding_2 i-flex i-align-items_center i-justify-content_space-between{{endif}}'>
<h2>{lang="$titleLang"}</h2>
{template="carouselNavigation" group="global" app="core" params="'topic-featured-posts'"}
</header>
@@ -9879,6 +9878,7 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $comment->getVi
{template="favico" app="core" group="global" location="front" params=""}
</head>
<body data-ips-hook="body" class='ipsApp ipsApp_front {{foreach output.bodyClasses as $class}} {$class}{{endforeach}}' {{if output.globalControllers}}data-controller='{expression="implode( ',', output.globalControllers )"}'{{endif}} {{if isset( output.inlineMessage )}}data-message="{expression="output.inlineMessage"}"{{endif}} data-pageApp='{$location['app']}' data-pageLocation='front' data-pageModule='{$location['module']}' data-pageController='{$location['controller']}' {{if isset( \IPS\Request::i()->id )}}data-pageID='{expression="(int) \IPS\Request::i()->id"}'{{endif}} {{if isset( \IPS\Dispatcher::i()->dispatcherController ) AND !\IPS\Dispatcher::i()->dispatcherController->isContentPage }}data-nocontent{{endif}} {{if output.pageName}}data-pageName="{expression="output.pageName"}"{{endif}}>
<a href='#ipsLayout__main' class='ipsSkipToContent'>{lang="jump_to_content"}</a>
{theme="headerHtml"}
{{if settings.googletag_enabled AND !(settings.core_datalayer_use_gtm AND settings.core_datalayer_enabled)}}
{setting="googletag_noscript_code"}
@@ -9894,7 +9894,6 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $comment->getVi
{{endif}}
<div class='ipsLayout__app'>
{template="announcementTop" app="core" group="global" params=""}
<a href='#ipsLayout_main' class='ipsSkipToContent'>{lang="jump_to_content"}</a>
<div data-ips-hook="mobileHeader" class='ipsMobileHeader ipsResponsive_header--mobile'>
{template="logo" app="core" group="global" params="'mobile'"}
{template="mobileNavHeader" app="core" group="global" params=""}
@@ -10067,42 +10066,32 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $comment->getVi
<div>
<input type="hidden" name="csrfKey" value="{expression="\IPS\Session::i()->csrfKey"}">
{{if \IPS\Login::registrationType() != 'disabled'}}
<div class='i-text-align_center i-padding_3 cGuestTeaser'>
<div class='i-text-align_center cGuestTeaser'>
{{if $isReview}}
<h2 class='ipsTitle ipsTitle--h3'>{lang="teaser_review_title_reg"}</h2>
<p class='i-color_soft i-margin-top_2'>{lang="teaser_review_desc_reg"}</p>
<h2 class='ipsTitle ipsTitle--h4'>{lang="teaser_review_title_reg"}</h2>
{{else}}
<h2 class='ipsTitle ipsTitle--h3'>{lang="teaser_title_reg"}</h2>
<p class='i-color_soft i-margin-top_2'>{lang="teaser_desc_reg"}</p>
<h2 class='ipsTitle ipsTitle--h4'>{lang="teaser_title_reg"}</h2>
{{endif}}
<div class='ipsBox i-padding_3 i-margin-top_3'>
<div class='ipsFluid i-basis_400'>
<div class='cGuestTeaser_left'>
<h2 class='ipsTitle ipsTitle--h3'>{lang="teaser_account"}</h2>
<p class='i-color_soft i-margin-bottom_3'>{lang="teaser_account_desc"}</p>
{{if \IPS\Login::registrationType() == 'redirect'}}
<a href='{expression="\IPS\Settings::i()->allow_reg_target"}' class='ipsButton ipsButton--primary ipsButton--small' target="_blank" rel="noopener">
{{else}}
<a href='{url="app=core&module=system&controller=register" seoTemplate="register"}' class='ipsButton ipsButton--primary ipsButton--small' {{if \IPS\Login::registrationType() == 'normal'}}data-ipsDialog data-ipsDialog-size='narrow' data-ipsDialog-title='{lang="sign_up"}'{{endif}}>
{{endif}}
{lang="teaser_account_button"}</a>
</div>
<div class='cGuestTeaser_right'>
<h2 class='ipsTitle ipsTitle--h3'>{lang="teaser_signin"}</h2>
<p class='i-color_soft i-margin-bottom_3'>{lang="teaser_signin_desc"}</p>
<a href='{url="app=core&module=system&controller=login" seoTemplate="login" ref="(string) $item->url() . '#replyForm'"}' data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-remoteVerify="false" data-ipsDialog-title="{lang="teaser_signin_button"}" class='ipsButton ipsButton--primary ipsButton--small'>{lang="teaser_signin_button"}</a>
</div>
<div class='ipsFluid i-basis_260 i-margin-top_3'>
<div>
{{if \IPS\Login::registrationType() == 'redirect'}}
<a href='{expression="\IPS\Settings::i()->allow_reg_target"}' class='ipsButton ipsButton--primary ipsButton--wide' target="_blank" rel="noopener">
{{else}}
<a href='{url="app=core&module=system&controller=register" seoTemplate="register"}' class='ipsButton ipsButton--primary ipsButton--wide' {{if \IPS\Login::registrationType() == 'normal'}}data-ipsDialog data-ipsDialog-size='narrow' data-ipsDialog-title='{lang="sign_up"}'{{endif}}>
{{endif}}
{lang="teaser_account_button"}</a>
</div>
<div>
<a href='{url="app=core&module=system&controller=login" seoTemplate="login" ref="(string) $item->url() . '#replyForm'"}' data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-remoteVerify="false" data-ipsDialog-title="{lang="teaser_signin_button"}" class='ipsButton ipsButton--secondary ipsButton--wide'>{lang="teaser_signin_button"}</a>
</div>
</div>
</div>
{{else}}
<div class='i-text-align_center i-padding_3'>
<h2 class='ipsTitle ipsTitle--h3'>{lang="teaser_title_noreg"}</h2>
<p class='i-color_soft i-margin-top_2'>{lang="teaser_desc_noreg"}</p>
<br>
<br>
<a href='{url="app=core&module=system&controller=login" seoTemplate="login" ref="(string) $item->url() . '#replyForm'"}' data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-remoteVerify="false" data-ipsDialog-title="{lang="teaser_signin_button"}" class='ipsButton ipsButton--secondary'>{lang="teaser_signin_button"}</a>
<div class='i-text-align_center'>
<h2 class='ipsTitle ipsTitle--h4'>{lang="teaser_title_noreg"}</h2>
<p class='i-color_soft i-margin-top_1'>{lang="teaser_desc_noreg"}</p>
<a href='{url="app=core&module=system&controller=login" seoTemplate="login" ref="(string) $item->url() . '#replyForm'"}' data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-remoteVerify="false" data-ipsDialog-title="{lang="teaser_signin_button"}" class='ipsButton ipsButton--primary i-margin-top_3'>{lang="teaser_signin_button"}</a>
</div>
{{endif}}
</div>]]></template>
@@ -13577,7 +13566,9 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $review->getVie
{{endif}}
{{endforeach}}
{{endif}}
{{if \count( $tags ) > 4}}
{{if \count( $tags ) == 5}}
{template="tag" group="global" app="core" params="$tags[4], $tagEditUrl"}
{{elseif \count( $tags ) > 4}}
<li class='ipsTags__more ipsJS_show'>
<a href="#" class='ipsTags__tag' data-ipsMenu id='elTags_{$id}'>{lang="and_x_more" pluralize="\count( $tags ) - 4"} <i class="fa-solid fa-angle-down"></i></a>
<div class='ipsHide ipsMenu ipsMenu_normal i-padding_2 cTagPopup' id='elTags_{$id}_menu'>
@@ -31005,11 +30996,6 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $review->getVie
}
/* Guest Sign In */
.cGuestTeaser .ipsButton.ipsButton--primary {
width: 100%;
max-width: 350px;
}
.cGuestTeaser_social {
width: 250px;
margin-bottom: 5px;
@@ -31170,14 +31156,6 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $review->getVie
margin: 0 auto;
}
html[dir] .cGuestTeaser_left {
border-left: 0;
border-right: 0;
border-bottom: 2px solid var(--i-background_2);
margin-bottom: 15px;
padding-bottom: 15px;
}
/* Reset guest teaser on mobile back to normal layout from tablet flex layout */
.cGuestTeaser .ipsGrid {
display: block !important;
@@ -31321,7 +31299,6 @@ data-view-tracking-data="{expression="base64_encode(json_encode( $review->getVie
box-shadow: none;
background: none;
border-radius: 0;
outline: max(var(--i-widget--bo-wi), 1px) solid var(--i-widget--bo-co);
}
.cWidgetContainer--carousel::-webkit-scrollbar {
@@ -37870,13 +37847,12 @@ a:has(.ipsBadge){
min-height: max(34px,2em);
min-width: max(34px,2.5em);
border-radius: min(var(--i-design-radius), 6px);
color: var(--i-co);
touch-action: manipulation;
}
@media (any-hover:hover){
.ipsCarouselNav__button:hover{
background: color-mix(in srgb, var(--i-co) 4%, transparent);
background: color-mix(in srgb, currentColor 4%, transparent);
}
}
@@ -37991,7 +37967,7 @@ a:has(.ipsBadge){
.ipsComposeArea{
display: flex;
gap: 1.3em;
gap: 1.2em;
}
.ipsComposeArea__photo{
@@ -40666,7 +40642,7 @@ i-data{
.ipsData--mini-grid .ipsData__item{
border-width: 0;
outline: var(--i-data--border) solid var(--i-background_3);
outline: var(--i-data--border) solid var(--i-data--bo-co);
}
.ipsData--mini-grid .ipsData__title{
@@ -42845,7 +42821,7 @@ a.ipsReact_reaction::after {
}
.ipsEntry__header .ipsPhotoPanel{
flex: 999 1 1%; /* 1% is needed to prevent unintended wrapping on small screens */
flex: 999 1 10%; /* 10% is needed to prevent unintended wrapping on small screens */
}
.ipsEntry__header .ipsPhotoPanel__secondary{
@@ -43389,6 +43365,13 @@ hr.ipsUnreadBar{
height: 6px;
}
/* Recommended note */
.ipsEntry__recommendedNote{
background: var(--i-background_2);
border-radius: 6px;
margin-top: 1em;
padding: 1em;
}
/* Truncate posts if using the compact style and are viewing pages beyond 1 */
.ipsEntry__truncate:not([data-truncate-expanded]){
@@ -43616,7 +43599,22 @@ hr.ipsUnreadBar{
}
}
/* Adjust the padding of the review form, since the parent wrapper already has padding */
.ipsForm--review > .ipsFieldRow:first-child{
padding-top: 0;
}
.ipsForm--review .ipsFieldRow{
border-width: 0;
padding-left: 0;
padding-right: 0;
}
.ipsForm--review .ipsSubmitRow{
padding-bottom: 0;
border-width: 0;
background: transparent;
}
@@ -50189,6 +50187,8 @@ li.L9 {
.ipsRating {
display: inline-flex;
flex-wrap: wrap;
gap: 0 1.5em;
color: var(--i-color_soft);
}
@@ -51549,8 +51549,8 @@ details.ipsQuote > .ipsQuote_contents{
}
/* Hide tabs if < 2 tabs exists */
.ipsTabs:not(:has([role="tab"]:nth-child(2))){
/* display: none; */
.ipsTabs:has([role="tablist"] > :only-child){
display: none;
}
.ipsTabs--sticky{
@@ -52079,10 +52079,6 @@ details.ipsQuote > .ipsQuote_contents{
mask-image: linear-gradient(to top, hsl(0 0% 0% / 0) 1.4em, hsl(0 0% 0% / 1) 50%);
}
:where(.tiptap .ipsQuote_contents, [data-ipstruncate])[data-truncated=&quot;true&quot;]:not([data-truncate-expanded]) {
overflow: auto;
}
/* This selector needs html due to :is(.ipsRichText, .ipsRichText) * */
html .ipsTruncate_more{
-webkit-appearance: none;
@@ -52368,14 +52364,38 @@ html .ipsTruncate_more{
padding: 1.5em 0;
--i-footer-widgets: 320px;
--i-color_root: var(--i-footer--co);
--i-color_hard: var(--i-footer--co);
--i-color_soft: color-mix(in srgb, var(--i-footer--co) 70%, var(--i-footer--ba-co));
--i-data--bo-co: color-mix(in srgb, var(--i-footer--co) 20%, var(--i-footer--ba-co));
}
.ipsFooter__footer a{
@supports (color: oklch(from var(--i) clamp(0, (.7 - l) * 1000, 1) c h)) and (color: oklch(from red l c h)){
.ipsFooter{
--i-color_hard: oklch(from var(--i-footer--ba-co) clamp(0, (.7 - l) * 1000, 1) c h);
}
}
.ipsFooter a{
color: inherit;
}
/* Adjust colors of elements so they match the footer background/color */
.ipsFooter .ipsList--border > li{
outline-color: var(--i-data--bo-co);
}
.ipsFooter .cSidebarBlock_managing .ipsButton--inherit,
.ipsFooter .ipsData--grid .ipsData__image,
.ipsFooter .ipsData__image > i{
background-color: var(--i-footer--ba-co);
}
.ipsFooter .ipsContainerTitle{
color: inherit;
}
.ipsFooter__widgets{
margin-bottom: 1.5em;
margin-bottom: 2em;
}
/* Hide footer widgets if they're empty */
@@ -52383,60 +52403,25 @@ html .ipsTruncate_more{
display: none;
}
.ipsFooter__widgets .cWidgetContainer > ul{
display: grid;
grid-auto-flow: column;
grid-auto-columns: minmax(min(var(--i-footer-widgets), 75vw), 1fr);
gap: 5em;
/* Remove all widget styles for the widget footer */
.ipsFooter__widgets .ipsWidget,
.ipsFooter__widgets .ipsWidget__header,
.ipsFooter__widgets .cWidgetContainer--carousel{
box-shadow: none;
background: color-mix(in srgb, var(--i-footer--co) 5%, var(--i-footer--ba-co));
color: inherit;
border-width: 0;
}
.ipsFooter__widgets .cWidgetContainer > ul > li{
padding: 2em 0;
scroll-snap-align: start;
}
/* Remove all widget styles for the widget footer */
.ipsFooter__widgets :is(.ipsWidget, .ipsWidget__header){
all: unset;
}
.ipsFooter__widgets .ipsWidget *{
color: inherit;
}
.ipsFooter__widgets .ipsWidget__header {
display: block;
font-weight: bold;
padding: 1em;
}
.ipsFooter__widgets .ipsData__item{
border-color: color-mix(in srgb, var(--i-co) 10%, transparent);
}
.ipsFooter__widgets :is(.ipsData__meta, .ipsPhotoPanel__secondary, .ipsData__stats){
--i-co: inherit;
color: color-mix(in srgb, var(--i-co) 50%, transparent);
}
.ipsFooter .cSidebarManager_placeholder{
height: auto;
}
/* Move into carousel on mobiles */
@media (max-width: 979px){
.ipsFooter__widgets .cWidgetContainer > ul{
gap: 2em;
margin-left: calc(var(--i-layout-gutter) * -1);
margin-right: calc(var(--i-layout-gutter) * -1);
overflow-x: scroll;
overscroll-behavior-x: contain;
scroll-behavior: smooth;
scroll-snap-type: x mandatory;
padding-inline: 2em;
scroll-padding-inline: 2em;
.ipsFooter__widgets .ipsWidget__header,
.ipsFooter__widgets .cWidgetContainer__carousel-buttons {
background: color-mix(in srgb, var(--i-footer--co) 10%, var(--i-footer--ba-co));
border-width: 0;
}
.ipsFooter .cSidebarManager_placeholder{
height: auto;
}
}
.ipsFooter__footer{
font-size: .9em;
@@ -53310,6 +53295,7 @@ i-navigation-menu{
.ipsLayout__main{
flex: 1 1 auto;
padding-top: var(--i-sp_block);
outline-width: 0;
}
@media (max-width: 979px){
@@ -53405,7 +53391,7 @@ i-navigation-menu{
display: block !important;
}
#elContextualTools{
#elContextualTools, [data-role="sidebarAd"]{
margin-bottom: var(--i-sp_block);
}
#elContextualTools,
@@ -55154,6 +55140,10 @@ a.i-link-color_inherit,
----------------
*/
.i-font-style_italic{
font-style: italic;
}
.i-text-transform_uppercase{
text-transform: uppercase;
}
+2 -1
View File
@@ -280,5 +280,6 @@
"5000028": "5.0.0 Beta 2",
"5000029": "5.0.0 Beta 3",
"5000030": "5.0.0 Beta 4",
"5000031": "5.0.0 Beta 5"
"5000031": "5.0.0 Beta 5",
"5000032": "5.0.0 Beta 6"
}
@@ -15,6 +15,7 @@ namespace IPS\core\extensions\core\MemberACPProfileBlocks;
use IPS\core\MemberACPProfile\TabbedBlock;
use IPS\core\ProfileFields\Field;
use IPS\Db;
use IPS\File;
use IPS\Helpers\Form;
use IPS\Helpers\Form\Custom;
use IPS\Helpers\Form\Editor;
@@ -211,22 +212,28 @@ class ProfileData extends TabbedBlock
Db::i()->replace( 'core_pfields_content', $profileFields );
/* Profile Preferences */
if ( $values['bday'] )
if( Settings::i()->profile_birthday_type !== 'none' )
{
$this->member->bday_day = $values['bday']['day'];
$this->member->bday_month = $values['bday']['month'];
$this->member->bday_year = $values['bday']['year'];
}
else
{
$this->member->bday_day = NULL;
$this->member->bday_month = NULL;
$this->member->bday_year = NULL;
if ( $values['bday'] )
{
$this->member->bday_day = $values['bday']['day'];
$this->member->bday_month = $values['bday']['month'];
$this->member->bday_year = $values['bday']['year'];
}
else
{
$this->member->bday_day = NULL;
$this->member->bday_month = NULL;
$this->member->bday_year = NULL;
}
}
if ( Settings::i()->signatures_enabled )
{
$this->member->signature = $values['signature'];
File::claimAttachments( 'sig-' . $this->member->member_id, $this->member->member_id );
}
$this->member->save();
/* Log and Redirect */
@@ -55,6 +55,7 @@ class General extends ModeratorPermissionsAbstract
}
$return['can_manage_sidebar'] = 'YesNo';
$return['can_use_theme_editor'] = 'YesNo';
$return['can_use_ip_tools'] = 'YesNo';
return $return;
@@ -224,7 +224,7 @@ class menu extends Controller
'title' => 'delete',
'link' => Url::internal( "app=core&module=applications&controller=menu&do=remove&id={$item['id']}" )->csrf(),
'icon' => 'times-circle',
'data' => [ 'confirm' => '' ]
'data' => ['delete' => ''],
];
$icon = null;
@@ -389,10 +389,16 @@ class emoticons extends Controller
{
try
{
File::get( 'core_Emoticons', $emoticon['image'] )->delete();
File::get( 'core_Emoticons', $emoticon['image_2x'] )->delete();
if( $emoticon['image'] )
{
File::get( 'core_Emoticons', $emoticon['image'] )->delete();
}
if( $emoticon['image_2x'] )
{
File::get( 'core_Emoticons', $emoticon['image_2x'] )->delete();
}
}
catch ( UnderflowException $e ) { }
catch ( OutOfRangeException $e ) { }
}
Db::i()->delete( 'core_emoticons', array( 'emo_set=?', $set ) );
@@ -769,7 +769,7 @@ class advertisements extends Controller
/* Any additional settings to save? */
$additionalSettings = array(
'ad_apps' => ( isset( $values['ad_apps'] ) AND $values['ad_apps'] != 0 ) ? array_keys( $values['ad_apps'] ) : 0
'ad_apps' => ( isset( $values['ad_apps'] ) AND is_array( $values['ad_apps'] ) ) ? array_keys( $values['ad_apps'] ) : 0
);
if( $values['ad_type'] == Advertisement::AD_EMAIL )
@@ -238,7 +238,7 @@ class seo extends Controller
$value = $values['use_robotstxt_custom_editor'];
}
$form->saveAsSettings( [ 'robots_txt' => $value ] );
$form->saveAsSettings( [ 'robots_txt' => $value, 'seo_reduce_links' => $values['seo_reduce_links'] ] );
Session::i()->log( 'acplog__robotstxt_edited' );
@@ -151,7 +151,7 @@ class membersactivity extends Controller
/* And now build the table */
$table = new Db( 'core_members', Request::i()->url()->setQueryString( array( 'postDateStart' => $startTime, 'postDateEnd' => $endTime, 'postGroups' => is_array( $groups ) ? implode( ',', $groups ) : NULL ) ), $where );
$table->include = array( 'name', 'email', 'member_posts', 'member_last_post', 'group_name', 'ip_address' );
$table->include = array( 'name', 'email', 'member_last_post', 'group_name', 'ip_address' );
$table->mainColumn = 'name';
$table->langPrefix = 'activity_';
$table->rowClasses = array( 'email' => array( 'ipsTable_wrap' ), 'group_name' => array( 'ipsTable_wrap' ) );
@@ -11,11 +11,13 @@
namespace IPS\core\modules\front\discover;
use IPS\Content;
use IPS\Content\Comment;
use IPS\Content\Filter;
use IPS\Content\Item;
use IPS\Content\Search\ContentFilter;
use IPS\Content\Search\Query;
use IPS\Content\Search\Result\Content as SearchResultContent;
use IPS\Content\Tag as SystemTag;
use IPS\Content\Taggable;
use IPS\DateTime;
use IPS\Db;
use IPS\Helpers\CoverPhoto;
@@ -24,11 +26,9 @@ use IPS\Helpers\Form;
use IPS\Helpers\Form\Date;
use IPS\Helpers\Form\Upload;
use IPS\Helpers\Table\Content as TableContent;
use IPS\IPS;
use IPS\Member;
use IPS\Output;
use IPS\Request;
use IPS\Settings;
use IPS\Theme;
use OutOfRangeException;
use function count;
@@ -176,48 +176,53 @@ class tag extends Controller
{
$contentTypes = SystemTag::getTaggableContentTypes();
$pinnedItems = $this->tag->getPinnedItems();
$items = [];
foreach( Db::i()->select( '*', [ 'core_tags', 't' ], [
[ 't.tag_text=?', $this->tag->text ],
[ 'p.tag_perm_visible=?', 1 ],
[ '(p.tag_perm_text=? or ' . Db::i()->findInSet( 'p.tag_perm_text', Member::loggedIn()->groups ) . ')', '*' ]
], 't.tag_added desc', 50 )
->join( [ 'core_tags_perms', 'p' ], 't.tag_aai_lookup=p.tag_perm_aai_lookup and t.tag_aap_lookup=p.tag_perm_aap_lookup' ) as $row )
$filters = [];
foreach( $contentTypes as $type )
{
if( count( $items ) >= Settings::i()->tags_landing_limit )
$filters[] = ContentFilter::init( $type );
}
$query = Query::init();
$query->setLimit( 50 );
$query->filterByContent( $filters );
$query->setOrder( Query::ORDER_NEWEST_CREATED );
$items = [];
foreach( $query->search( null, [ $this->tag->text ], Query::TAGS_MATCH_ITEMS_ONLY ) as $result )
{
/* @var SearchResultContent $result */
$pinned = false;
$result = $result->asArray();
/* If the result is a pinned item, then don't show it in the regular list */
if( is_array( $pinnedItems ) )
{
break;
foreach( $pinnedItems as $pinnedItem )
{
$pinnedItemIdColumn = $pinnedItem::$databaseColumnId;
if( get_class( $pinnedItem ) == $result['indexData']['index_class'] and $pinnedItem->$pinnedItemIdColumn == $result['indexData']['index_object_id'] )
{
$pinned = true;
break;
}
}
}
foreach( $contentTypes as $k => $itemClass )
if( !$pinned )
{
if( $itemClass::$application == $row['tag_meta_app'] and $itemClass::$module == $row['tag_meta_area'] )
try
{
try
$itemClass = $result['indexData']['index_class'];
$id = $result['indexData']['index_object_id'];
if( is_subclass_of( $itemClass, Comment::class ) )
{
$item = $itemClass::load( $row['tag_meta_id'] );
$idColumn = $itemClass::$databaseColumnId;
$pinned = false;
if( is_array( $pinnedItems ) )
{
foreach( $pinnedItems as $pinnedItem )
{
if( get_class( $pinnedItem ) == $itemClass and $pinnedItem->$idColumn == $item->$idColumn )
{
$pinned = true;
break;
}
}
}
if( !$pinned )
{
$items[] = $item;
}
$itemClass = $itemClass::$itemClass;
$id = $result['indexData']['index_item_id'];
}
catch( OutOfRangeException ){}
break;
$items[] = $itemClass::load( $id );
}
catch( OutOfRangeException ){}
}
}
@@ -135,7 +135,7 @@ class register extends Controller
{
Output::i()->redirect( Url::internal( 'app=nexus&module=store&controller=store&do=register', 'front', 'store' ) );
}
else if ( Member::loggedIn()->canAccessModule( Module::get( 'nexus', 'subscriptions' ) ) and ( Settings::i()->nexus_subs_register ) )
else if ( Member::loggedIn()->canAccessModule( Module::get( 'nexus', 'subscriptions' ) ) and Settings::i()->nexus_subs_enabled and Settings::i()->nexus_subs_register )
{
Output::i()->redirect( Url::internal( 'app=nexus&module=subscriptions&controller=subscriptions&register=1', 'front', 'nexus_subscriptions' ) );
}
@@ -56,7 +56,7 @@ class themeeditor extends Controller
*/
public function manage(): void
{
if ( ! Member::loggedIn()->isAdmin() ) /* @todo add perm checks in Admin CP */
if( !Member::loggedIn()->modPermission( 'can_use_theme_editor' ) )
{
Output::i()->error( 'no_permission', '2S164/1', 403, '' );
}
@@ -36,7 +36,7 @@ class Upgrade
*/
public function finish()
{
Task::queue( 'core', 'BuildTimeToRank', NULL, 3 );
Task::queue( 'core', 'BuildTimeToRank', [], 3 );
return TRUE;
}
}
@@ -35,7 +35,7 @@ class Upgrade
*/
public function finish()
{
Task::queue( 'core', 'RebuildReportIndexData', NULL, 3 );
Task::queue( 'core', 'RebuildReportIndexData', [], 3 );
return TRUE;
}
@@ -11,6 +11,7 @@
namespace IPS\core\setup\upg_5000015;
use IPS\Application;
use IPS\core\FrontNavigation;
use IPS\Db;
use IPS\Data\Store;
@@ -18,6 +19,7 @@ use IPS\Lang;
use IPS\Member;
use OutOfRangeException;
use function defined;
use function in_array;
/* To prevent PHP errors (extending class does not exist) revealing path */
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
@@ -60,7 +62,7 @@ class Upgrade
/* Create the language string */
$class = 'IPS\\' . $root['app'] . '\extensions\core\FrontNavigation\\' . $root['extension'];
if( class_exists( $class ) )
if( in_array( $root['app'], array_keys( Application::enabledApplications() ) ) and class_exists( $class ) )
{
/* @var FrontNavigation\FrontNavigationAbstract $class */
$obj = new $class( json_decode( (string) $root['config'], true ), $root['id'], $root['permissions'], $root['menu_types'], json_decode( (string) $root['icon'], true ), $root['parent'] );
@@ -0,0 +1,22 @@
{
"id": 5000032,
"name": "5.0.0 Beta 6",
"steps": {
"queries": false,
"lang": true,
"theme": true,
"themeeditor": true,
"javascript": true,
"emailTemplates": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": true,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,16 @@
{
"files": {
"added": [],
"edited": [
"core\/front\/controllers\/core\/ips.core.moderation.js",
"core\/front\/controllers\/core\/ips.core.reviewForm.js",
"global\/framework\/templates\/ips.core.templates.js"
],
"removed": []
},
"orders": {
"added": [],
"edited": [],
"removed": []
}
}
@@ -0,0 +1,18 @@
{
"normal": {
"added": [
"can_use_theme_editor"
],
"edited": [
"enhancements__core_FacebookPixel",
"enhancements__core_FacebookPixel_desc",
"fb_pixel_id_req"
],
"removed": []
},
"js": {
"added": [],
"edited": [],
"removed": []
}
}
@@ -0,0 +1,41 @@
{
"html": {
"added": [],
"edited": [
"global\/forms\/editorAttachmentsPlaceholder",
"front\/forms\/postingInformation",
"front\/forms\/reviewTemplate",
"front\/forms\/row",
"front\/global\/analytics",
"front\/global\/featuredComment",
"front\/global\/featuredComments",
"front\/global\/globalTemplate",
"front\/global\/guestCommentTeaser",
"front\/global\/tags"
],
"removed": []
},
"css": {
"added": [],
"edited": [
"front\/core.css",
"global\/framework\/3-carousel.css",
"global\/framework\/3-compose.css",
"global\/framework\/3-data-tables.css",
"global\/framework\/3-entries.css",
"global\/framework\/3-forms.css",
"global\/framework\/3-rating.css",
"global\/framework\/3-tabs.css",
"global\/framework\/3-truncate.css",
"global\/framework\/4-footer.css",
"global\/framework\/4-layout.css",
"global\/framework\/5-typography.css"
],
"removed": []
},
"resources": {
"added": [],
"edited": [],
"removed": []
}
}
@@ -0,0 +1,116 @@
{
"categories": {
"added": [],
"edited": [
"lightDarkMode",
"logos",
"pageLayouts",
"typography",
"header",
"sidePanel",
"content",
"footer",
"mobileNavigation",
"navigationPanel",
"global",
"textLogo",
"imageLogoDesktop",
"imageLogoMobile",
"desktopHeader",
"mobileHeader",
"desktopFooter",
"body",
"contentBoxes",
"sidebar",
"avatars",
"buttons"
],
"removed": []
},
"settings": {
"added": [],
"edited": [
"set__i-default-scheme",
"set__i-logo-text",
"set__i-sidebar-width",
"i-primary-button--co",
"set__i-mobile-icons-location",
"set__logo-light",
"i-footer--co",
"set__mobile-logo-light",
"layout_global_view_mode",
"set__i-font-family",
"set__i-design-border",
"set__i-layout-width",
"set__i-sidebar-ui-header--he",
"set__i-position-logo",
"set__i-mobile-header--he",
"set__i-change-scheme",
"set__i-logo-slogan",
"i-primary-button--ba-co",
"set__i-mobile-footer-labels",
"set__logo-dark",
"i-footer--ba-co",
"set__mobile-logo-dark",
"set__i-design-radius",
"set__i-font-size",
"set__i-flip-sidebar",
"i-dashHeader--ba-co",
"set__i-position-navigation",
"i-headerMobile--ba-co",
"i-headerMobile--co",
"i-secondary-button--co",
"set__i-logo--fo-fa",
"set__i-position-user",
"i-dashHeader--co",
"set__i-avatar-radius",
"i-color_root",
"set__i-mobile-logo--he",
"set__i-design-shadow",
"i-mobileFooter--ba-co",
"set__i-logo--he",
"i-secondary-button--ba-co",
"set__i-logo--fo-we",
"i-navPanelLinkHover--co",
"set__i-position-breadcrumb",
"i-mobileFooter--co",
"i-color_soft",
"i-body--ba-co",
"set__i-link-panels",
"set__i-sidebar-ui-logo--he",
"i-button--bo-ra",
"set__i-desktop-logo--fo-si",
"set__i-sticky-sidebar",
"i-navPanelLinkActive--ba-co",
"set__i-position-search",
"i-mobileFooter-active--co",
"i-color_hard",
"i-box--ba-co",
"set__i-header-primary--he",
"set__i-sidebar-ui-logo--fo-si",
"i-box--bo-co",
"i-link--co",
"i-mobileFooter-active--ba-co",
"i-navPanel--ba-co",
"set__i-mobile-logo--fo-si",
"i-link-hover--co",
"i-navPanel--co",
"set__i-header-secondary--he",
"i-boxHeader--ba-co",
"i-boxHeader--co",
"set__i-user-content-font-size",
"i-navPanelLinkActive--co",
"set__i-nav-bar-icons",
"i-widget-header--ba-co",
"i-headerTop--ba-co",
"i-widget-header--co",
"i-headerTop--co",
"i-headerPrimary--ba-co",
"i-headerPrimary--co",
"i-headerSecondary--ba-co",
"i-headerSecondary--co",
"set__i-header-top--he"
],
"removed": []
}
}
+1 -1
View File
@@ -440,7 +440,7 @@ class Stream extends Model
$value = $containers->$class ?? 0;
/* @var Item $class */
$field = new Node( 'stream_containers_' . $class::$title, $value, FALSE, array( 'class' => $nodeClass, 'clubs' => TRUE, 'multiple' => TRUE, 'zeroVal' => 'all', 'permissionCheck' => $nodeClass::searchableNodesPermission(), 'forceOwner' => FALSE, 'subnodes' => FALSE ), NULL, NULL, NULL, 'stream_containers_' . $class::$title );
$field = new Node( 'stream_containers_' . $class::$title, $value, FALSE, array( 'class' => $nodeClass, 'clubs' => TRUE, 'multiple' => TRUE, 'zeroVal' => 'all', 'forceOwner' => FALSE, 'subnodes' => FALSE ), NULL, NULL, NULL, 'stream_containers_' . $class::$title );
$field->label = Member::loggedIn()->language()->addToStack( $nodeClass::$nodeTitle );
$form->add( $field );
}
+9 -9
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<javascript app="downloads">
<file javascript_app="downloads" javascript_location="front" javascript_path="controllers/downloads" javascript_name="ips.downloads.browse.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000200">/**
<file javascript_app="downloads" javascript_location="front" javascript_path="controllers/downloads" javascript_name="ips.downloads.browse.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000200">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -59,7 +59,7 @@
}
});
}(jQuery, _));</file>
<file javascript_app="downloads" javascript_location="front" javascript_path="controllers/pending" javascript_name="ips.pending.buttons.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000250">/**
<file javascript_app="downloads" javascript_location="front" javascript_path="controllers/pending" javascript_name="ips.pending.buttons.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000250">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -87,7 +87,7 @@
});
}(jQuery, _));</file>
<file javascript_app="downloads" javascript_location="admin" javascript_path="controllers/settings" javascript_name="ips.settings.settings.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000050">/**
<file javascript_app="downloads" javascript_location="admin" javascript_path="controllers/settings" javascript_name="ips.settings.settings.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000050">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -140,7 +140,7 @@
});
}(jQuery, _));</file>
<file javascript_app="downloads" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.linkedScreenshots.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000100">/**
<file javascript_app="downloads" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.linkedScreenshots.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000100">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -212,7 +212,7 @@
}
});
}(jQuery, _));</file>
<file javascript_app="downloads" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.main.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000100"><![CDATA[/**
<file javascript_app="downloads" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.main.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000100"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -657,7 +657,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="downloads" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.changeLog.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000150"><![CDATA[/**
<file javascript_app="downloads" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.changeLog.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000150"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -779,7 +779,7 @@
});
}(jQuery, _));]]></file>
<file javascript_app="downloads" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.download.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000150">/**
<file javascript_app="downloads" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.download.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000150">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -907,7 +907,7 @@
});
}(jQuery, _));</file>
<file javascript_app="downloads" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.subscribe.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000150">/**
<file javascript_app="downloads" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.subscribe.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000150">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -970,7 +970,7 @@
}
});
}(jQuery, _));</file>
<file javascript_app="downloads" javascript_location="front" javascript_path="templates" javascript_name="ips.templates.submit.js" javascript_type="template" javascript_version="5000031" javascript_position="1000050"><![CDATA[/* VIEW TEMPLATES */
<file javascript_app="downloads" javascript_location="front" javascript_path="templates" javascript_name="ips.templates.submit.js" javascript_type="template" javascript_version="5000032" javascript_position="1000050"><![CDATA[/* VIEW TEMPLATES */
ips.templates.set('downloads.submit.screenshot', " \
<div class='ipsUploader__row ipsUploader__row--image ipsAttach {{#done}}ipsAttach_done{{/done}}' id='{{id}}' data-role='file' data-fileid='{{id}}' data-filesize='{{sizeRaw}}' data-fullsizeurl='{{imagesrc}}' data-thumbnailurl='{{thumbnail}}' data-fileType='image'>\
<div class='ipsUploader__rowPreview' data-role='preview'>\
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<language>
<app key="downloads" version="5000031">
<app key="downloads" version="5000032">
<word key="__app_downloads" js="0">Downloads</word>
<word key="frontnavigation_downloads" js="0">Downloads</word>
<word key="__indefart_downloads_file_comment" js="0">a comment on a file</word>
+9 -5
View File
@@ -2249,7 +2249,7 @@
<div id='ipsTabs_file_content' class='ipsTabs__panels ipsTabs__panels--padded'>
<div id='ipsTabs_file_desc_panel' class="ipsTabs__panel" role="tabpanel" aria-labelledby="ipsTabs_file_desc">
{{endif}}
<section class='ipsEntry i-padding_3'>
<section class='ipsEntry i-padding_2'>
<div class='ipsEntry__post'>
<div class='ipsRichText ipsRichText--user' data-controller='core.front.core.lightboxedImages'>{$file->content()|raw}</div>
{{if $file->editLine()}}
@@ -2295,10 +2295,14 @@
</div>
{{foreach $cfields as $field}}
{{if $field['location'] == 'tab'}}
<div id='ipsTabs_file_{$field['key']}_panel' class="ipsTabs__panel" role="tabpanel" aria-labelledby="ipsTabs_file_{$field['key']}" hidden>
<div class='ipsRichText' data-controller='core.front.core.lightboxedImages'>
{$field['value']|raw}
</div>
<div id='ipsTabs_file_downloads_{$field['key']}_panel' class="ipsTabs__panel" role="tabpanel" aria-labelledby="ipsTabs_file_downloads_{$field['key']}" hidden>
<section class='ipsEntry i-padding_2'>
<div class='ipsEntry__post'>
<div class='ipsRichText' data-controller='core.front.core.lightboxedImages'>
{$field['value']|raw}
</div>
</div>
</section>
</div>
{{endif}}
{{endforeach}}
+2 -1
View File
@@ -279,5 +279,6 @@
"5000028": "5.0.0 Beta 2",
"5000029": "5.0.0 Beta 3",
"5000030": "5.0.0 Beta 4",
"5000031": "5.0.0 Beta 5"
"5000031": "5.0.0 Beta 5",
"5000032": "5.0.0 Beta 6"
}
@@ -0,0 +1,22 @@
{
"id": 5000032,
"name": "5.0.0 Beta 6",
"steps": {
"queries": false,
"lang": false,
"theme": true,
"themeeditor": true,
"javascript": false,
"emailTemplates": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,19 @@
{
"html": {
"added": [],
"edited": [
"front\/view\/view"
],
"removed": []
},
"css": {
"added": [],
"edited": [],
"removed": []
},
"resources": {
"added": [],
"edited": [],
"removed": []
}
}
@@ -0,0 +1,14 @@
{
"categories": {
"added": [],
"edited": [],
"removed": []
},
"settings": {
"added": [],
"edited": [
"layout_downloads_categories"
],
"removed": []
}
}
-11
View File
@@ -265,17 +265,6 @@
"forum settings"
]
},
"app=forums&module=forums&controller=settings&searchResult=form_forums_default_view": {
"lang_key": "forums_default_view",
"restriction": "settings_access",
"keywords": [
"fluid",
"grid",
"mode",
"table",
"view"
]
},
"app=forums&module=forums&controller=settings&searchResult=form_forums_helpful_highlight": {
"lang_key": "forums_helpful_highlight",
"restriction": "settings_access",
-1
View File
@@ -68,7 +68,6 @@
<acpsearch key="app=forums&amp;module=forums&amp;controller=savedActions&amp;searchResult=form_new_topic_title_end"><![CDATA[{"lang_key":"topic_title_end","restriction":"savedActions_manage","keywords":["add end","add title","end title"]}]]></acpsearch>
<acpsearch key="app=forums&amp;module=forums&amp;controller=savedActions&amp;searchResult=form_new_topic_title_st"><![CDATA[{"lang_key":"topic_title_st","restriction":"savedActions_manage","keywords":["add start","add title","start title"]}]]></acpsearch>
<acpsearch key="app=forums&amp;module=forums&amp;controller=settings"><![CDATA[{"lang_key":"menu__forums_forums_settings","restriction":"settings_access","keywords":["forum settings"]}]]></acpsearch>
<acpsearch key="app=forums&amp;module=forums&amp;controller=settings&amp;searchResult=form_forums_default_view"><![CDATA[{"lang_key":"forums_default_view","restriction":"settings_access","keywords":["fluid","grid","mode","table","view"]}]]></acpsearch>
<acpsearch key="app=forums&amp;module=forums&amp;controller=settings&amp;searchResult=form_forums_helpful_highlight"><![CDATA[{"lang_key":"forums_helpful_highlight","restriction":"settings_access","keywords":["helpful","solution","solved"]}]]></acpsearch>
<acpsearch key="app=forums&amp;module=forums&amp;controller=settings&amp;searchResult=form_forums_posts_per_page"><![CDATA[{"lang_key":"forums_posts_per_page","restriction":"settings_access","keywords":["posts per page"]}]]></acpsearch>
<acpsearch key="app=forums&amp;module=forums&amp;controller=settings&amp;searchResult=form_forums_rss"><![CDATA[{"lang_key":"forums_rss","restriction":"settings_access","keywords":["rss export"]}]]></acpsearch>
+10 -10
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<javascript app="forums">
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/forum" javascript_name="ips.forum.flow.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000100"><![CDATA[/**
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/forum" javascript_name="ips.forum.flow.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000100"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -272,7 +272,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/forum" javascript_name="ips.forum.forumList.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000100"><![CDATA[/**
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/forum" javascript_name="ips.forum.forumList.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000100"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -340,7 +340,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/forum" javascript_name="ips.forum.forumPage.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000100"><![CDATA[/**
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/forum" javascript_name="ips.forum.forumPage.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000100"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -397,7 +397,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/forum" javascript_name="ips.forum.hovercard.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000100">/**
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/forum" javascript_name="ips.forum.hovercard.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000100">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -447,7 +447,7 @@
}
});
}(jQuery, _));</file>
<file javascript_app="forums" javascript_location="admin" javascript_path="controllers/settings" javascript_name="ips.settings.archiveRules.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000050"><![CDATA[/**
<file javascript_app="forums" javascript_location="admin" javascript_path="controllers/settings" javascript_name="ips.settings.archiveRules.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000050"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -512,7 +512,7 @@
});
}(jQuery, _));
]]></file>
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/topic" javascript_name="ips.topic.activity.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000050">/**
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/topic" javascript_name="ips.topic.activity.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000050">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -534,7 +534,7 @@
}
});
}(jQuery, _));</file>
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/topic" javascript_name="ips.topic.answers.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000050"><![CDATA[/**
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/topic" javascript_name="ips.topic.answers.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000050"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -674,7 +674,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/topic" javascript_name="ips.topic.reply.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000050">/**
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/topic" javascript_name="ips.topic.reply.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000050">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -703,7 +703,7 @@
}
});
}(jQuery, _));</file>
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/topic" javascript_name="ips.topic.solved.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000050"><![CDATA[/**
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/topic" javascript_name="ips.topic.solved.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000050"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -741,7 +741,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/topic" javascript_name="ips.topic.view.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000050">/**
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/topic" javascript_name="ips.topic.view.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000050">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<language>
<app key="forums" version="5000031">
<app key="forums" version="5000032">
<word key="__app_forums" js="0">Forums</word>
<word key="frontnavigation_forums" js="0">Forums</word>
<word key="__indefart_post" js="0">a post in a topic</word>
+1 -1
View File
@@ -695,7 +695,7 @@
</li>
{{endif}}
{{else}}
<li data-ips-hook="topicRow" data-controller="cloud.front.realtime.forumsTopicRow" class="ipsData__item ipsData__item--snippet {{if $row->groupsPosted}}ipsData__item--highlighted{{endif}}{{if $row->isAssignedToMember()}} ipsData__item--assigned{{endif}} {{if method_exists( $row, 'tableClass' ) && $row->tableClass()}}ipsData__item--{$row->tableClass()}{{endif}} {{if $row->hidden() or $row->isFutureDate()}}ipsModerated{{endif}}{{if $row->isFutureDate()}} ipsModerated--alternate{{endif}}" data-rowID='{$row->$idField}' {{if isset($row->locationHash)}}data-location='{$row->locationHash}'{{endif}}' {{if $row->unread()}}data-ips-unread{{else}}data-ips-read{{endif}}>
<li data-ips-hook="topicRow" data-controller="cloud.front.realtime.forumsTopicRow" class="ipsData__item ipsData__item--snippet {{if $row->groupsPosted}}ipsData__item--highlighted{{endif}}{{if $row->isAssignedToMember()}} ipsData__item--assigned{{endif}} {{if method_exists( $row, 'tableClass' ) && $row->tableClass()}}ipsData__item--{$row->tableClass()}{{endif}} {{if $row->hidden() or $row->isFutureDate()}}ipsModerated{{endif}}{{if $row->isFutureDate()}} ipsModerated--alternate{{endif}} {$row->ui( 'css' )}" data-rowID='{$row->$idField}' {{if isset($row->locationHash)}}data-location='{$row->locationHash}'{{endif}} {{if $row->unread()}}data-ips-unread{{else}}data-ips-read{{endif}} {$row->ui( 'dataAttributes' )}>
<a href='{$row->url( "getPrefComment" )}' class="ipsLinkPanel" aria-hidden="true" tabindex="-1"><span>{$row->mapped('title')}</span></a>
<div class='ipsData__icon'>
{template="userPhoto" app="core" group="global" params="$row->author(), 'fluid'"}
+2 -1
View File
@@ -279,5 +279,6 @@
"5000028": "5.0.0 Beta 2",
"5000029": "5.0.0 Beta 3",
"5000030": "5.0.0 Beta 4",
"5000031": "5.0.0 Beta 5"
"5000031": "5.0.0 Beta 5",
"5000032": "5.0.0 Beta 6"
}
@@ -0,0 +1,7 @@
{
"added": [],
"edited": [],
"removed": [
"app=forums&module=forums&controller=settings&searchResult=form_forums_default_view"
]
}
@@ -0,0 +1,22 @@
{
"id": 5000032,
"name": "5.0.0 Beta 6",
"steps": {
"queries": false,
"lang": false,
"theme": true,
"themeeditor": true,
"javascript": false,
"emailTemplates": false,
"acpSearchKeywords": true,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,19 @@
{
"html": {
"added": [],
"edited": [
"front\/forums\/topicRowSnippet"
],
"removed": []
},
"css": {
"added": [],
"edited": [],
"removed": []
},
"resources": {
"added": [],
"edited": [],
"removed": []
}
}
@@ -0,0 +1,17 @@
{
"categories": {
"added": [],
"edited": [],
"removed": []
},
"settings": {
"added": [],
"edited": [
"layout_forums_forum",
"layout_forums_topic",
"layout_forums_post",
"layout_forum_topic_view_firstpost"
],
"removed": []
}
}
+44 -18
View File
@@ -671,10 +671,11 @@ class Forum extends Model implements Permissions
/**
* Get last post data
*
* @param int $count Max number of items, most available is 5
* @param int $count Max number of items, most available is 5
* @param bool $isChild
* @return array|null
*/
public function lastPost( int $count=1 ): ?array
public function lastPost( int $count=1, $isChild=false ): ?array
{
if ( $count > 5 )
{
@@ -743,7 +744,7 @@ class Forum extends Model implements Permissions
foreach( $this->children() as $child )
{
/* We need to merge all children and pick the top 5 */
if ( $childLastPost = $child->lastPost( $count ) )
if ( $childLastPost = $child->lastPost( $count, true ) )
{
$results = $results + $childLastPost;
}
@@ -785,25 +786,14 @@ class Forum extends Model implements Permissions
{
foreach( $lastPostData as $lastPostTime => $lastPost )
{
if ( $lastPost['last_poster_id'] )
{
$lastAuthor = Member::load( $lastPost['last_poster_id'] );
}
else
{
$lastAuthor = new Member;
if ( $lastPost['last_poster_name'] )
{
$lastAuthor->name = $lastPost['last_poster_name'];
}
}
if ( $this->sub_can_post and !$this->permission_showtopic and ! $this->can('read') )
{
$lastPost['last_title'] = null;
}
$results[ $lastPostTime ] = array(
'author' => $lastAuthor,
'author' => null,
'_author' => ! empty( $lastPost['last_poster_id'] ) ? $lastPost['last_poster_id'] : ( $lastPost['last_poster_name'] ?? '' ),
'topic_url' => Url::internal( "app=forums&module=forums&controller=topic&id={$lastPost['last_id']}", 'front', 'forums_topic', array( $lastPost['seo_last_title'] ) ),
'topic_title' => $lastPost['last_title'],
'date' => $lastPostTime,
@@ -818,7 +808,7 @@ class Forum extends Model implements Permissions
{
/* @var Forum $child */
/* We need to merge all children and pick the top 5 */
if ( $childLastPost = $child->lastPost( $count ) )
if ( $childLastPost = $child->lastPost( $count, true ) )
{
if( is_array( $childLastPost ) )
{
@@ -836,6 +826,42 @@ class Forum extends Model implements Permissions
if ( count( $results ) )
{
/* Don't process the author details if we're not going to use them */
if ( ! $isChild )
{
$membersToLoad = [];
/* Let's get the author details */
foreach ( $results as $timestamp => $data )
{
if ( $data['_author'] and is_int( $data['_author'] ) )
{
$membersToLoad[ $timestamp ] = $data['_author'];
}
else
{
if ( $data['_author'] and is_string( $data['_author'] ) )
{
$results[ $timestamp ]['author'] = new Member;
$results[ $timestamp ]['author']->name = $data['_author'];
}
}
}
if ( count( $membersToLoad ) )
{
$membersLoaded = iterator_to_array( Db::i()->select( '*', 'core_members', [ Db::i()->in( 'member_id', $membersToLoad ) ] )->setKeyField( 'member_id' ) );
foreach ( $membersToLoad as $timestamp => $memberId )
{
if ( isset( $membersLoaded[$memberId] ) )
{
$results[$timestamp]['author'] = Member::constructFromData( $membersLoaded[$memberId] );
}
}
}
}
krsort( $results );
if ( $count === 1 )
{
+17 -4
View File
@@ -369,6 +369,22 @@ class Post extends Comment implements Embeddable,
return TRUE;
}
/**
* Custom where conditions used specifically for finding comments
*
* @return array|null
*/
public static function findCommentWhere() : array|null
{
/* If we feature the first post, then pagination is all wrong */
if( Member::loggedIn()->getLayoutValue( 'forum_topic_view_firstpost' ) )
{
return [ 'new_topic=?', 0 ];
}
return parent::findCommentWhere();
}
/**
* [ActiveRecord] Save
@@ -398,10 +414,7 @@ class Post extends Comment implements Embeddable,
static::recordSync( $item );
}
}
catch( OutOfRangeException $e )
{
$item = NULL;
}
catch( OutOfRangeException $e ){}
parent::delete();
@@ -979,6 +979,18 @@ class Topic extends Item implements Embeddable,
$topic->state = 'closed';
}
}
if ( Bridge::i()->featureIsEnabled( 'realtime' ) )
{
$hash = [
'app' => 'forums',
'module' => 'forums',
'controller' => 'topic',
'id' => $topic->tid
];
Bridge::i()->addAdditionalLocation( $hash );
$topic->locationHash = Bridge::i()->getLocationHash( $hash );
}
}
if ( !empty( $openIds ) )
+12 -12
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<javascript app="gallery">
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/global" javascript_name="ips.global.nsfw.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000200">;( function($, _, undefined){
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/global" javascript_name="ips.global.nsfw.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000200">;( function($, _, undefined){
&quot;use strict&quot;;
ips.controller.register('gallery.front.global.nsfw', {
@@ -20,7 +20,7 @@
});
}(jQuery, _));</file>
<file javascript_app="gallery" javascript_location="admin" javascript_path="controllers/settings" javascript_name="ips.settings.settings.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000050">/**
<file javascript_app="gallery" javascript_location="admin" javascript_path="controllers/settings" javascript_name="ips.settings.settings.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000050">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -77,7 +77,7 @@
});
}(jQuery, _));</file>
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.chooseCategory.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000100"><![CDATA[/**
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.chooseCategory.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000100"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -244,7 +244,7 @@
});
}(jQuery, _));
]]></file>
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.existingAlbums.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000100"><![CDATA[/**
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.existingAlbums.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000100"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -280,7 +280,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.uploadImages.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000100"><![CDATA[/**
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.uploadImages.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000100"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -411,7 +411,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.wrapper.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000100"><![CDATA[/**
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/submit" javascript_name="ips.submit.wrapper.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000100"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -1166,7 +1166,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.image.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000150">/**
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.image.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000150">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -1308,7 +1308,7 @@
}
});
}(jQuery, _));</file>
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.note.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000150"><![CDATA[/**
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.note.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000150"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -1768,7 +1768,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.notes.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000150"><![CDATA[/**
<file javascript_app="gallery" javascript_location="front" javascript_path="controllers/view" javascript_name="ips.view.notes.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000150"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -1851,8 +1851,8 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="gallery" javascript_location="front" javascript_path="templates" javascript_name="ips.templates.browse.js" javascript_type="template" javascript_version="5000031" javascript_position="1000050">// Empty</file>
<file javascript_app="gallery" javascript_location="front" javascript_path="templates" javascript_name="ips.templates.submit.js" javascript_type="template" javascript_version="5000031" javascript_position="1000050"><![CDATA[ips.templates.set('gallery.submit.imageItem', " \
<file javascript_app="gallery" javascript_location="front" javascript_path="templates" javascript_name="ips.templates.browse.js" javascript_type="template" javascript_version="5000032" javascript_position="1000050">// Empty</file>
<file javascript_app="gallery" javascript_location="front" javascript_path="templates" javascript_name="ips.templates.submit.js" javascript_type="template" javascript_version="5000032" javascript_position="1000050"><![CDATA[ips.templates.set('gallery.submit.imageItem', " \
<div class='ipsAttach ipsImageAttach {{#done}}ipsAttach_done{{/done}}' id='{{id}}' data-role='file' data-fileid='{{id}}' data-fullsizeurl='{{imagesrc}}' data-thumbnailurl='{{thumbnail}}' data-isImage='1'>\
<ul class='ipsImageAttach_controls'>\
<li data-role='insert' {{#insertable}}style='display: none'{{/insertable}}><a href='#' data-action='insertFile' class='ipsAttach_selection' data-ipsTooltip title='{{#lang}}insertIntoPost{{/lang}}'><i class='fa-solid fa-plus'></i></a></li>\
@@ -1879,7 +1879,7 @@
ips.templates.set('gallery.submit.imageItemWrapper', " \
<div class='cGallerySubmit_fileList'>{{{content}}}</div>\
");]]></file>
<file javascript_app="gallery" javascript_location="front" javascript_path="templates" javascript_name="ips.templates.view.js" javascript_type="template" javascript_version="5000031" javascript_position="1000050"><![CDATA[ips.templates.set('gallery.notes.wrapper', " \
<file javascript_app="gallery" javascript_location="front" javascript_path="templates" javascript_name="ips.templates.view.js" javascript_type="template" javascript_version="5000032" javascript_position="1000050"><![CDATA[ips.templates.set('gallery.notes.wrapper', " \
<div class='cGalleryNote' data-controller='gallery.front.view.note' data-noteID='{{id}}' data-note=\"{{note}}\" {{#editable}}data-editable{{/editable}} data-posLeft='{{left}}' data-posTop='{{top}}' data-dimWidth='{{width}}' data-dimHeight='{{height}}'>\
<div class='cGalleryNote_border'></div>\
<div class='cGalleryNote_note' style='display: none'>\
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<language>
<app key="gallery" version="5000031">
<app key="gallery" version="5000032">
<word key="__app_gallery" js="0">Gallery</word>
<word key="frontnavigation_gallery" js="0">Gallery</word>
<word key="gallery_title" js="0">Gallery</word>
+2 -1
View File
@@ -280,5 +280,6 @@
"5000028": "5.0.0 Beta 2",
"5000029": "5.0.0 Beta 3",
"5000030": "5.0.0 Beta 4",
"5000031": "5.0.0 Beta 5"
"5000031": "5.0.0 Beta 5",
"5000032": "5.0.0 Beta 6"
}
@@ -0,0 +1,22 @@
{
"id": 5000032,
"name": "5.0.0 Beta 6",
"steps": {
"queries": false,
"lang": false,
"theme": false,
"themeeditor": false,
"javascript": false,
"emailTemplates": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -343,11 +343,12 @@ class Category extends Model implements Permissions
$class = get_called_class();
$form->add( new Node( 'gcategory_parent_id', $this->id ? $this->parent_id : ( Request::i()->parent ?: 0 ), FALSE, array(
'class' => '\IPS\gallery\Category',
'disabled' => false,
'zeroVal' => 'node_no_parentg',
'permissionCheck' => function( $node ) use ( $class )
$form->add( new Node( 'gcategory_parent_id', $this->id ? $this->parent_id : ( Request::i()->parent ?: 0 ), FALSE, [
'class' => Category::class,
'disabled' => false,
'zeroVal' => 'node_no_parentg',
'disableCopy' => true,
'permissionCheck' => function( $node ) use ( $class )
{
if( isset( $class::$subnodeClass ) AND $class::$subnodeClass AND $node instanceof $class::$subnodeClass )
{
@@ -356,7 +357,8 @@ class Category extends Model implements Permissions
return !isset( Request::i()->id ) or ( $node->id != Request::i()->id and !$node->isChildOf( $node::load( Request::i()->id ) ) );
}
) ) );
]
) );
$sortoptions = array(
'album_last_img_date' => 'sort_updated',
@@ -1850,6 +1850,7 @@ Filter
if( $previousAlbum )
{
$album = Album::load( $previousAlbum );
$album->_items = $album->_items -1;
$album->setLastImage();
$album->save();
}
+19 -19
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<javascript app="nexus">
<file javascript_app="nexus" javascript_location="front" javascript_path="controllers/checkout" javascript_name="ips.checkout.register.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000100">/**
<file javascript_app="nexus" javascript_location="front" javascript_path="controllers/checkout" javascript_name="ips.checkout.register.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000100">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -34,7 +34,7 @@
}
});
}(jQuery, _));</file>
<file javascript_app="nexus" javascript_location="front" javascript_path="controllers/checkout" javascript_name="ips.checkout.review.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000100"><![CDATA[/**
<file javascript_app="nexus" javascript_location="front" javascript_path="controllers/checkout" javascript_name="ips.checkout.review.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000100"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -91,7 +91,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="nexus" javascript_location="global" javascript_path="controllers/forms" javascript_name="ips.forms.businessAddressVat.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000150"><![CDATA[/**
<file javascript_app="nexus" javascript_location="global" javascript_path="controllers/forms" javascript_name="ips.forms.businessAddressVat.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000150"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -130,7 +130,7 @@
});
}(jQuery, _));]]></file>
<file javascript_app="nexus" javascript_location="global" javascript_path="controllers/gateways" javascript_name="ips.gateways.stripe.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000200"><![CDATA[/**
<file javascript_app="nexus" javascript_location="global" javascript_path="controllers/gateways" javascript_name="ips.gateways.stripe.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000200"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -471,7 +471,7 @@
});
}(jQuery, _));]]></file>
<file javascript_app="nexus" javascript_location="global" javascript_path="controllers/gateways" javascript_name="ips.gateways.stripepaymentrequest.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000200">/**
<file javascript_app="nexus" javascript_location="global" javascript_path="controllers/gateways" javascript_name="ips.gateways.stripepaymentrequest.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000200">/**
* IPS Community Suite 4
* (c) 2017 Invision Power Services - http://www.invisionpower.com
*
@@ -552,7 +552,7 @@
});
}(jQuery, _));</file>
<file javascript_app="nexus" javascript_location="global" javascript_path="controllers/misc" javascript_name="ips.misc.print.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000100">/**
<file javascript_app="nexus" javascript_location="global" javascript_path="controllers/misc" javascript_name="ips.misc.print.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000100">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -574,7 +574,7 @@
});
}(jQuery, _));</file>
<file javascript_app="nexus" javascript_location="admin" javascript_path="controllers/notifications" javascript_name="ips.notifications.pendingTransactions.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000100">/**
<file javascript_app="nexus" javascript_location="admin" javascript_path="controllers/notifications" javascript_name="ips.notifications.pendingTransactions.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000100">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -654,7 +654,7 @@
});
}(jQuery, _));</file>
<file javascript_app="nexus" javascript_location="admin" javascript_path="controllers/store" javascript_name="ips.store.productoptions.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000150"><![CDATA[/**
<file javascript_app="nexus" javascript_location="admin" javascript_path="controllers/store" javascript_name="ips.store.productoptions.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000150"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -709,7 +709,7 @@
});
}(jQuery, _));]]></file>
<file javascript_app="nexus" javascript_location="admin" javascript_path="controllers/store" javascript_name="ips.store.productselector.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000150"><![CDATA[/**
<file javascript_app="nexus" javascript_location="admin" javascript_path="controllers/store" javascript_name="ips.store.productselector.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000150"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -769,7 +769,7 @@
});
}(jQuery, _));]]></file>
<file javascript_app="nexus" javascript_location="front" javascript_path="controllers/store" javascript_name="ips.store.cartReview.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000200">/**
<file javascript_app="nexus" javascript_location="front" javascript_path="controllers/store" javascript_name="ips.store.cartReview.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000200">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -869,7 +869,7 @@
}
});
}(jQuery, _));</file>
<file javascript_app="nexus" javascript_location="front" javascript_path="controllers/store" javascript_name="ips.store.category.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000200"><![CDATA[/**
<file javascript_app="nexus" javascript_location="front" javascript_path="controllers/store" javascript_name="ips.store.category.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000200"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -977,7 +977,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="nexus" javascript_location="front" javascript_path="controllers/store" javascript_name="ips.store.currencySelect.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000200">/**
<file javascript_app="nexus" javascript_location="front" javascript_path="controllers/store" javascript_name="ips.store.currencySelect.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000200">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -1020,7 +1020,7 @@
}
});
}(jQuery, _));</file>
<file javascript_app="nexus" javascript_location="front" javascript_path="controllers/store" javascript_name="ips.store.giftCard.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000200"><![CDATA[/**
<file javascript_app="nexus" javascript_location="front" javascript_path="controllers/store" javascript_name="ips.store.giftCard.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000200"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -1108,7 +1108,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="nexus" javascript_location="front" javascript_path="controllers/store" javascript_name="ips.store.packagePage.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000200"><![CDATA[/**
<file javascript_app="nexus" javascript_location="front" javascript_path="controllers/store" javascript_name="ips.store.packagePage.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000200"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -1385,7 +1385,7 @@
});
}(jQuery, _));]]></file>
<file javascript_app="nexus" javascript_location="front" javascript_path="controllers/store" javascript_name="ips.store.register.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000200"><![CDATA[/**
<file javascript_app="nexus" javascript_location="front" javascript_path="controllers/store" javascript_name="ips.store.register.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000200"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -1534,7 +1534,7 @@
},
});
}(jQuery, _));]]></file>
<file javascript_app="nexus" javascript_location="front" javascript_path="controllers/subscriptions" javascript_name="ips.subscriptions.main.js" javascript_type="controller" javascript_version="5000031" javascript_position="1000150">/**
<file javascript_app="nexus" javascript_location="front" javascript_path="controllers/subscriptions" javascript_name="ips.subscriptions.main.js" javascript_type="controller" javascript_version="5000032" javascript_position="1000150">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -1572,7 +1572,7 @@
}
});
}(jQuery, _));</file>
<file javascript_app="nexus" javascript_location="admin" javascript_path="templates" javascript_name="ips.templates.store.js" javascript_type="template" javascript_version="5000031" javascript_position="1000050"><![CDATA[ips.templates.set('nexus.store.images', `
<file javascript_app="nexus" javascript_location="admin" javascript_path="templates" javascript_name="ips.templates.store.js" javascript_type="template" javascript_version="5000032" javascript_position="1000050"><![CDATA[ips.templates.set('nexus.store.images', `
<div class='ipsUploader__row ipsUploader__row--image ipsAttach {{#done}}ipsAttach_done{{/done}}' id='{{id}}' data-role='file' data-fileid='{{id}}' data-fullsizeurl='{{imagesrc}}' data-thumbnailurl='{{thumbnail}}' data-fileType='image'>
<div class='ipsUploader__rowPreview' data-role='preview'>
{{#thumb}}
@@ -1605,12 +1605,12 @@
ips.templates.set('nexus.store.imagesWrapper', `
<div class='ipsUploader__container ipsUploader__container--images'>{{{content}}}</div>
`);]]></file>
<file javascript_app="nexus" javascript_location="front" javascript_path="templates" javascript_name="ips.templates.store.js" javascript_type="template" javascript_version="5000031" javascript_position="1000050"><![CDATA[ips.templates.set('nexus.store.productImage', " \
<file javascript_app="nexus" javascript_location="front" javascript_path="templates" javascript_name="ips.templates.store.js" javascript_type="template" javascript_version="5000032" javascript_position="1000050"><![CDATA[ips.templates.set('nexus.store.productImage', " \
<a href='{{fullURL}}' data-fullURL='{{fullURL}}' class='cNexusProduct_primaryImage' data-ipsLightbox data-ipsLightbox-group='product' style='background-image:url({{thumbURL}})'>\
<img src='{{thumbURL}}' alt=''>\
</a>\
");]]></file>
<file javascript_app="nexus" javascript_location="global" javascript_path="templates" javascript_name="ips.templates.gateways.js" javascript_type="template" javascript_version="5000031" javascript_position="1000050"><![CDATA[ips.templates.set('nexus.gateway.vaultAccount', " \
<file javascript_app="nexus" javascript_location="global" javascript_path="templates" javascript_name="ips.templates.gateways.js" javascript_type="template" javascript_version="5000032" javascript_position="1000050"><![CDATA[ips.templates.set('nexus.gateway.vaultAccount', " \
<li>\
<input type='radio' name='{{fieldName}}[stored]' value='{{value}}' id='{{fieldName}}_stored{{random}}' data-control='toggle' data-toggles='{{fieldName}}_existing' class='ipsInput ipsInput--toggle'>\
<div class='ipsFieldList__content'>\
+2 -2
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<language>
<app key="nexus" version="5000031">
<app key="nexus" version="5000032">
<word key="__app_nexus" js="0">Commerce</word>
<word key="menutab__nexus" js="0">Commerce</word>
<word key="menutab__nexus_icon" js="0">usd</word>
@@ -942,7 +942,7 @@
<word key="total_spent_currency" js="0">Total Spent (%s)</word>
<word key="average_spend_currency" js="0">Avg. Monthly Spend (%s)</word>
<word key="average_time_to_pay" js="0">Avg. Time to Pay</word>
<word key="customer_notes" js="0">Notes</word>
<word key="customer_notes" js="0">Customer Notes</word>
<word key="num_customer_notes" js="0">{# [1:customer note][?:customer notes]}</word>
<word key="num_customer_notes_uc" js="0">{# [1:Customer Note][?:Customer Notes]}</word>
<word key="customer_note" js="0">Note</word>
+2 -2
View File
@@ -2211,7 +2211,7 @@
<template template_group="customers" template_name="notesBlock" template_data="$customer, $noteCount, $notes" template_location="admin" template_app="nexus"><![CDATA[{{if $noteCount}}
<div class='ipsBox cNotesBox' data-ips-template="notesBlock">
<h2 class='ipsBox__header'>
<span>{lang="num_customer_notes_uc" pluralize="$noteCount"} ({$noteCount})</span>
<span>{lang="customer_notes"} ({$noteCount})</span>
<a href='{url="app=core&module=members&controller=members&do=lazyBlock&block=IPS\\nexus\\extensions\\core\\MemberACPProfileBlocks\\Notes&id={$customer->member_id}"}' data-ipsDialog data-ipsDialog-title='{lang="customer_notes"}' class='i-margin-start_auto'>
{lang="manage_notes"}
</a>
@@ -2225,7 +2225,7 @@
<a href='{url="app=core&module=members&controller=members&do=lazyBlock&block=IPS\\nexus\\extensions\\core\\MemberACPProfileBlocks\\Notes&id={$customer->member_id}"}' data-ipsDialog data-ipsDialog-title='{lang="customer_notes"}' class='i-float_end i-font-size_1'>
{lang="manage_notes"}
</a>
{lang="num_customer_notes_uc" pluralize="$noteCount"} ({$noteCount})
{lang="customer_notes"} ({$noteCount})
</div>
{{endif}}]]></template>
<template template_group="customers" template_name="notesOverview" template_data="$table, $headers, $rows, $quickSearch" template_location="admin" template_app="nexus"><![CDATA[
+2 -1
View File
@@ -280,5 +280,6 @@
"5000028": "5.0.0 Beta 2",
"5000029": "5.0.0 Beta 3",
"5000030": "5.0.0 Beta 4",
"5000031": "5.0.0 Beta 5"
"5000031": "5.0.0 Beta 5",
"5000032": "5.0.0 Beta 6"
}
@@ -34,7 +34,7 @@ class Upgrade
*/
public function step1() : bool|array
{
Task::queue( 'nexus', 'FixMissingSubscriptionPurchases' );
Task::queue( 'nexus', 'FixMissingSubscriptionPurchases', [] );
return TRUE;
}
@@ -0,0 +1,22 @@
{
"id": 5000032,
"name": "5.0.0 Beta 6",
"steps": {
"queries": false,
"lang": true,
"theme": true,
"themeeditor": true,
"javascript": false,
"emailTemplates": false,
"acpSearchKeywords": false,
"settings": false,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
@@ -0,0 +1,14 @@
{
"normal": {
"added": [],
"edited": [
"customer_notes"
],
"removed": []
},
"js": {
"added": [],
"edited": [],
"removed": []
}
}
@@ -0,0 +1,19 @@
{
"html": {
"added": [],
"edited": [
"admin\/customers\/notesBlock"
],
"removed": []
},
"css": {
"added": [],
"edited": [],
"removed": []
},
"resources": {
"added": [],
"edited": [],
"removed": []
}
}
@@ -0,0 +1,14 @@
{
"categories": {
"added": [],
"edited": [],
"removed": []
},
"settings": {
"added": [],
"edited": [
"layout_store_view"
],
"removed": []
}
}
+2 -2
View File
@@ -141,7 +141,7 @@ class IPS
}
else
{
$uniqueKey = mb_substr( md5( '56556655' . '$Rev: 3023$'), 10, 10 );
$uniqueKey = mb_substr( md5( '12345678' . '$Rev: 3023$'), 10, 10 );
}
$staticKey = null;
@@ -484,7 +484,7 @@ class IPS
// CACHEBUST_KEY to be a "for reals, will change every release" one. DO NOT set a value
// for it in constants.php
'SUITE_UNIQUE_KEY' => $uniqueKey,
'CACHEBUST_KEY' => mb_substr( md5( '55664566' . '$Rev: 3023$'), 10, 10 ),
'CACHEBUST_KEY' => mb_substr( md5( '12345678' . '$Rev: 3023$'), 10, 10 ),
// Thumbnail size
// This needs to be hardcoded rather than configurable because it's the smallest size that
+1 -1
View File
@@ -1 +1 @@
.cCalendar{width:100%;table-layout:fixed;}@media (min-width:767px){.cCalendar{width:calc(100% + 2px);margin:-1px;margin-top:0;}}.cCalendar th{background:var(--i-background_4);border:1px solid var(--i-background_5);padding:.8em;font-weight:500;}.cCalendarIcon{display:inline-block;width:18px;height:18px;border-radius:5px;margin-inline-end:5px;vertical-align:middle;}.cCalendar td{width:14.285%;min-height:100px;border:1px solid var(--i-background_4);vertical-align:top;padding:.5em;}.cCalendar td > div{height:100%;min-height:100px;position:relative;}.cCalendar td.cCalendar_nonDate{background:var(--i-background_2);}.cCalendar td.cCalendar_today{background:var(--i-background_dark);color:var(--i-color_background-dark-contrast);}.cCalendar_dayNumber{color:inherit;font-size:1.1em;font-weight:600;display:inline-block;}.cCalendar_miniAddEvent{padding:.2em .4em;background:var(--i-background_4);color:inherit;display:inline-block;border-radius:5px;opacity:0;transition:0.2s all ease-in-out;margin-inline-start:.5em;}.cCalendar td:hover .cCalendar_miniAddEvent{opacity:.5;}.cCalendar td .cCalendar_miniAddEvent:hover{opacity:1;}.cCalendar_today .cCalendar_miniAddEvent{background:none;}a.cEvents_event, .cEvents_event a, .cEvents_event.cEvents_empty span{display:block;line-height:28px;height:28px;font-size:var(--i-font-size_-1);padding:0 1em;color:#fff;border-radius:20px;white-space:nowrap;overflow:hidden;background:var(--i-background_dark);}a.cEvents_style_blank, .cEvents_style_blank a, .cCalendarIcon.cEvents_style_blank{background-color:transparent;border:1px solid var(--i-background_5);}a.cEvents_event.cEvents_eventSmall, .cEvents_event.cEvents_eventSmall a, .cEvents_event.cEvents_eventSmall.cEvents_empty span{font-size:var(--i-font-size_-2);display:inline-block;}.cEvents_time{font-size:max(10px, .7em);text-transform:uppercase;opacity:0.7;}.cEvents_event.cEvents_empty span{background:transparent;}.cEvents_single .cEvents_event a{border-radius:20px;}.cEvents_ranged .cEvents_event a{border-radius:0;}.cEvents_ranged .cEvents_event:not(.cEvents_first) a{margin-inline-start:-7px;padding-inline-start:8px;}.cEvents_ranged .cEvents_event:not(.cEvents_last) a{margin-inline-end:-8px;}.cEvents_ranged .cEvents_event.cEvents_first a{border-start-start-radius:20px;border-end-start-radius:20px;}.cEvents_ranged .cEvents_event.cEvents_last a{border-start-end-radius:20px;border-end-end-radius:20px;}tr td:not(:first-child):not(.cCalendar_firstDay) .cEvents_ranged .cEvents_event:not(.cEvents_first) a, tr td:not(:first-child):not(.cCalendar_firstDay) .cEvents_ranged .cEvents_event:not(.cEvents_first) a span{font-size:0;}tr td:not(:first-child):not(.cCalendar_firstDay) .cEvents_ranged .cEvents_event:not(.cEvents_first) a img{display:none;}.cEvents__sidebarOnlineLogo{display:flex;align-items:center;justify-content:center;color:var(--i-color_soft);}.cEvents__sidebarOnlineLogo svg{height:.8em;width:auto;margin:0 .4em;}.cCalendarBlock_map{text-align:center;margin:1em auto;}.cCalendar_shortInput{width:auto;}.cCalendarSubmit_field{display:inline-block;position:relative;}.cCalendarSubmit_field input{padding-inline-start:35px !important;}.cCalendarSubmit_field i[class*=" fa-"]{position:absolute;color:var(--i-color_soft);top:50%;inset-inline-start:1em;transform:translateY(-50%);font-size:1em;opacity:.5;pointer-events:none;}#event_remind_me [type="number"]{max-width:60px;}.eventStreamDate .cCalendarEmbed_calendar{background:var(--i-background_2);}.eventStreamDate .ipsCalendarDate{width:80px;}.cEvents__overview-header{display:grid;gap:var(--i-sp_block);}@media (min-width:767px){.cEvents__overview-header:has(.cEvents__overview-featured){grid-template-columns:1fr max(340px, 30%);}}.ipsData--events-featured{--i-data--max:1;--i-data--gap:0px;--i-data--radius:0 0 var(--i-box--bo-ra) var(--i-box--bo-ra);--i-data--desc-truncate:2;--i-data--display-desc:initial;}.ipsData--events-featured .ipsData__content{padding-inline-start:6em;}.ipsData--events-featured .ipsCalendarDate{width:3.3em;position:absolute;inset-inline-start:1.5em;}[data-ips-scheme="light"] .ipsData--events-featured .ipsCalendarDate__date{color:hsl(0 0% 30%);}.cEvents__search{display:flex;flex-wrap:wrap;gap:1.8em 1em;}.cEvents__search > *{flex:1 1 100%;}.ipsEventSearch__searchLocation{flex:0 0 auto;font-weight:600;font-size:.9em;align-self:start;}.ipsEventSearch__searchLocation:hover{text-decoration:underline;}.cEvents__search__field--date{flex-basis:150px;}.cEvents__search__field--date input{width:100%;}.cEvents__search__label{color:var(--i-color_hard);display:block;font-weight:600;margin-bottom:.5em;}.cEvents__search__searchWrap :is([type="text"], [type="search"]){flex:1 1 auto;}@media (max-width:767px){.ipsEventSearch__searchLocation span{display:none;}}.ipsEventSearch .ipsField_loading{background-image:url('"../resources/core_cf5a1e7fc191338071d07df134b620d0_tiny_loading@2x.gif"') !important;background-size:14px 14px;background-repeat:no-repeat;background-position:right 5px center;}.cEvents__searcLine truncated
.cCalendar{width:100%;table-layout:fixed;}@media (min-width:767px){.cCalendar{width:calc(100% + 2px);margin:-1px;margin-top:0;}}.cCalendar th{background:var(--i-background_4);border:1px solid var(--i-background_5);padding:.8em;font-weight:500;}.cCalendarIcon{display:inline-block;width:18px;height:18px;border-radius:5px;margin-inline-end:5px;vertical-align:middle;}.cCalendar td{width:14.285%;min-height:100px;border:1px solid var(--i-background_4);vertical-align:top;padding:.5em;}.cCalendar td > div{height:100%;min-height:100px;position:relative;}.cCalendar td.cCalendar_nonDate{background:var(--i-background_2);}.cCalendar td.cCalendar_today{background:var(--i-background_dark);color:var(--i-color_background-dark-contrast);}.cCalendar_dayNumber{color:inherit;font-size:1.1em;font-weight:600;display:inline-block;}.cCalendar_miniAddEvent{padding:.2em .4em;background:var(--i-background_4);color:inherit;display:inline-block;border-radius:5px;opacity:0;transition:0.2s all ease-in-out;margin-inline-start:.5em;}.cCalendar td:hover .cCalendar_miniAddEvent{opacity:.5;}.cCalendar td .cCalendar_miniAddEvent:hover{opacity:1;}.cCalendar_today .cCalendar_miniAddEvent{background:none;}a.cEvents_event, .cEvents_event a, .cEvents_event.cEvents_empty span{display:block;line-height:28px;height:28px;font-size:var(--i-font-size_-1);padding:0 1em;color:#fff;border-radius:20px;white-space:nowrap;overflow:hidden;background:var(--i-background_dark);}a.cEvents_style_blank, .cEvents_style_blank a, .cCalendarIcon.cEvents_style_blank{background-color:transparent;border:1px solid var(--i-background_5);}a.cEvents_event.cEvents_eventSmall, .cEvents_event.cEvents_eventSmall a, .cEvents_event.cEvents_eventSmall.cEvents_empty span{font-size:var(--i-font-size_-2);display:inline-block;}.cEvents_time{font-size:max(10px, .7em);text-transform:uppercase;opacity:0.7;}.cEvents_event.cEvents_empty span{background:transparent;}.cEvents_single .cEvents_event a{border-radius:20px;}.cEvents_ranged .cEvents_event a{border-radius:0;}.cEvents_ranged .cEvents_event:not(.cEvents_first) a{margin-inline-start:-7px;padding-inline-start:8px;}.cEvents_ranged .cEvents_event:not(.cEvents_last) a{margin-inline-end:-8px;}.cEvents_ranged .cEvents_event.cEvents_first a{border-start-start-radius:20px;border-end-start-radius:20px;}.cEvents_ranged .cEvents_event.cEvents_last a{border-start-end-radius:20px;border-end-end-radius:20px;}tr td:not(:first-child):not(.cCalendar_firstDay) .cEvents_ranged .cEvents_event:not(.cEvents_first) a, tr td:not(:first-child):not(.cCalendar_firstDay) .cEvents_ranged .cEvents_event:not(.cEvents_first) a span{font-size:0;}tr td:not(:first-child):not(.cCalendar_firstDay) .cEvents_ranged .cEvents_event:not(.cEvents_first) a img{display:none;}.cEvents__sidebarOnlineLogo{display:flex;align-items:center;justify-content:center;color:var(--i-color_soft);}.cEvents__sidebarOnlineLogo svg{height:.8em;width:auto;margin:0 .4em;}.cCalendarBlock_map{text-align:center;margin:1em auto;}.cCalendar_shortInput{width:auto;}.cCalendarSubmit_field{display:inline-block;position:relative;}.cCalendarSubmit_field input{padding-inline-start:35px !important;}.cCalendarSubmit_field i[class*=" fa-"]{position:absolute;color:var(--i-color_soft);top:50%;inset-inline-start:1em;transform:translateY(-50%);font-size:1em;opacity:.5;pointer-events:none;}#event_remind_me [type="number"]{max-width:60px;}.eventStreamDate .cCalendarEmbed_calendar{background:var(--i-background_2);}.eventStreamDate .ipsCalendarDate{width:80px;}.cEvents__overview-header{display:grid;gap:var(--i-sp_block);}@media (min-width:767px){.cEvents__overview-header:has(.cEvents__overview-featured){grid-template-columns:1fr max(340px, 30%);}}.ipsData--events-featured{--i-data--max:1;--i-data--gap:0px;--i-data--radius:0 0 var(--i-box--bo-ra) var(--i-box--bo-ra);--i-data--desc-truncate:2;--i-data--display-desc:initial;}.ipsData--events-featured .ipsData__content{padding-inline-start:6em;}.ipsData--events-featured .ipsCalendarDate{width:3.3em;position:absolute;inset-inline-start:1.5em;}[data-ips-scheme="light"] .ipsData--events-featured .ipsCalendarDate__date{color:hsl(0 0% 30%);}.cEvents__search{display:flex;flex-wrap:wrap;gap:1.8em 1em;}.cEvents__search > *{flex:1 1 100%;}.ipsEventSearch__searchLocation{flex:0 0 auto;font-weight:600;font-size:.9em;align-self:start;}.ipsEventSearch__searchLocation:hover{text-decoration:underline;}.cEvents__search__field--date{flex-basis:150px;}.cEvents__search__field--date input{width:100%;}.cEvents__search__label{color:var(--i-color_hard);display:block;font-weight:600;margin-bottom:.5em;}.cEvents__search__searchWrap :is([type="text"], [type="search"]){flex:1 1 auto;}@media (max-width:767px){.ipsEventSearch__searchLocation span{display:none;}}.ipsEventSearch .ipsField_loading{background-image:url('"../resources/core_cf5a1e7fc191338071d07df134b620d0_tiny_loading@2x.gif"') !important;background-size:14px 14px;background-repeat:no-repeat;background-position:right 5px center;}.cEvents__searcLine truncated
+1 -1
View File
@@ -1 +1 @@
#elErrorMessage{max-width:800px;margin-left:auto;margin-right:auto;}.ipsHovercard[data-role="advicePopup"]{width:300px;}.ipsHovercard[data-role="advicePopup"] > div{min-height:60px;}.ipsHovercard[data-role="advicePopup"].cStem_ltr .ipsHovercard_stem{right:100%;top:15px;}.ipsHovercard[data-role="advicePopup"].cStem_ltr .ipsHovercard_stem:before{right:1px;border-right-color:inherit;}.ipsHovercard[data-role="advicePopup"].cStem_ltr .ipsHovercard_stem:after{border-right-color:currentColor;}.ipsHovercard[data-role="advicePopup"].cStem_rtl .ipsHovercard_stem{left:100%;top:15px;}.ipsHovercard[data-role="advicePopup"].cStem_rtl .ipsHovercard_stem:before{left:1px;border-left-color:inherit;}.ipsHovercard[data-role="advicePopup"].cStem_rtl .ipsHovercard_stem:after{border-left-color:currentColor;}.ipsHovercard[data-role="advicePopup"].cStem_above .ipsHovercard_stem{left:50%;margin-left:-1em;top:100%;}.ipsHovercard[data-role="advicePopup"].cStem_above .ipsHovercard_stem:before{border-top-color:inherit;top:1px;}.ipsHovercard[data-role="advicePopup"].cStem_above .ipsHovercard_stem:after{border-top-color:currentColor;}.ipsShareLinks{display:flex;flex-wrap:wrap;gap:.4em;}.ipsShareLink{width:2.4em;height:2.4em;border-radius:min(var(--i-design-radius), 6px);display:inline-grid;place-content:center;color:#fff !important;font-size:max(15px, 1em);}.ipsShareLink--internal{background:#008b00;}.ipsShareLink--deviantart{background:#00e59b;}.ipsShareLink--email{background:#444;}.ipsShareLink--facebook{background:#1778F2;}.ipsShareLink--linkedin{background:#0a66c2;}.ipsShareLink--reddit{background:#FF4500;}.ipsShareLink--vk{background:#507299;}.ipsShareLink--weibo{background:#D32F2F;}.ipsShareLink--youtube{background:#ff0000;}.ipsShareLink--foursquare{background:#2D5BE3;}.ipsShareLink--etsy{background:#F56400;}.ipsShareLink--flickr{background:#ff0084;}.ipsShareLink--github{background:#24292f;}.ipsShareLink--instagram{background:#E13D62;}.ipsShareLink--pinterest{background:#BD081C;}.ipsShareLink--slack{background:#42C299;}.ipsShareLink--xing{background:#B0D400;}.ipsShareLink--tumblr{background:#36465D;}.ipsShareLink--twitch{background:#772ce8;}.ipsShareLink--discord{background:#5865f2;}.ipsShareLink--x{background:#000000;}.ipsWidget .cStatusUpdateWidget .ipsComposeArea_dummy{padding:7px 10px;font-size:var(--i-font-size_-1);}.ipsWidget .cStatusUpdateWidget .ipsComposeArea_dummy i[class*=" fa-"]{margin-inline-end:5px;}.ipsWidget .cStatusUpdateWidget [data-role="attachmentArea"]{display:none !important;}.cTagPopup .ipsTags{margin-top:10px;}#elGuestTerms{background:var(--i-background_1);border-top:1px solid color-mix(in srgb, var(--i-color_root) 10%, transparent);background-clip:var(--if-light,padding-box) var(--if-dark,border-box);position:sticky;bottom:0;padding:1.3em 0;z-index:4000;}:where([data-ips-scheme="dark"]) #elGuestTerms{background:var(--i-background_3);}@media (max-width:979px){#elGuestTerms{bottom:var(--i-mobileFooter--he);}}.cGuestTeaser .ipsButton.ipsButton--primary{width:100%;max-width:350px;}.cGuestTeaser_social{width:250px;margin-bottom:5px;}.grecaptcha-badge{z-index:10;}@media (max-width:979px){body:not(:has(.ipsEditor:focus-within)) .grecaptcha-badge{bottom:calc(var(--i-mobileFooter--he) + 10px) !important;}}@media (min-width:980px){body:has(#elGuestTerms[style*="block"]) .grecaptcha-badge{bottom:120px !important;}}.cColorChoices li{position:relative;}.cColorChoice_chooser{background-color:var(--_ba-co);width:42px;height:36px;display:block;position:relative;border-radius:4px;}.cColorChoices [type="radio"]{position:absolute;width:100%;height:100%;z-index:1;appearance:none;cursor:pointer;}.cColorChoices [type="radio"]:checked + .cColorChoice_chooser{outline:2px solid currentColor;outline-offset:1px;}.cClubEmbedHeader{position:relative;height:180px;}.cClubEmbedHeader.cClubEmbedHeaderNoPhoto, .cClubEmbedHeader.cClubEmbedHeaderNoPhoto span{height:120px;}.cClubEmbedHeader .ipsUserPhoto{position:absolute;left:50%;top:50%;transform:translate(-50%, -50%);border:2px solid #fff;}.cNotifcationPrompt{position:relative;background:var(--i-background_dark);color:#fff;}.cNotifcationPrompt_title{color:inherit;}.cNotifcationPrompt_text{opacity:0.7;}.cNotifcationPrompt_icon{display:block;background-image:url('../resources/core_d0e70b4cbb9ab8afb1bc1065a3f8487a_notification.svg');background-repeat:no-repeat;background-size:cover;aspect-ratio:1;}.cNotifcationPrompt_dismiss{background:hsl(0 0% 0% / .6);width:16px;height:16px;border-radius:16px;line-height:16px;text-align:center;color:#fff;font-size:12px;position:absolute;top:9px;inset-inline-end:9px;}.cContentMessageEditor.cContentMessageEditor--private .ipsEditor{border-color:var(--i-color_negative);--bo-sh:color-mix(in srgb, var(--i-color_negative) 15%, transparent);box-shadow:var(--bo-sh) 0px 0px 0px 6px;}.cContentMessageEditor.cContentMessageEditor--public .ipsEditor{border-color:var(--i-color_positive);--bo-sh:color-mix(in srgb, var(--i-color_positive) 15%, transparent);box-shadow:var(-Line truncated
#elErrorMessage{max-width:800px;margin-left:auto;margin-right:auto;}.ipsHovercard[data-role="advicePopup"]{width:300px;}.ipsHovercard[data-role="advicePopup"] > div{min-height:60px;}.ipsHovercard[data-role="advicePopup"].cStem_ltr .ipsHovercard_stem{right:100%;top:15px;}.ipsHovercard[data-role="advicePopup"].cStem_ltr .ipsHovercard_stem:before{right:1px;border-right-color:inherit;}.ipsHovercard[data-role="advicePopup"].cStem_ltr .ipsHovercard_stem:after{border-right-color:currentColor;}.ipsHovercard[data-role="advicePopup"].cStem_rtl .ipsHovercard_stem{left:100%;top:15px;}.ipsHovercard[data-role="advicePopup"].cStem_rtl .ipsHovercard_stem:before{left:1px;border-left-color:inherit;}.ipsHovercard[data-role="advicePopup"].cStem_rtl .ipsHovercard_stem:after{border-left-color:currentColor;}.ipsHovercard[data-role="advicePopup"].cStem_above .ipsHovercard_stem{left:50%;margin-left:-1em;top:100%;}.ipsHovercard[data-role="advicePopup"].cStem_above .ipsHovercard_stem:before{border-top-color:inherit;top:1px;}.ipsHovercard[data-role="advicePopup"].cStem_above .ipsHovercard_stem:after{border-top-color:currentColor;}.ipsShareLinks{display:flex;flex-wrap:wrap;gap:.4em;}.ipsShareLink{width:2.4em;height:2.4em;border-radius:min(var(--i-design-radius), 6px);display:inline-grid;place-content:center;color:#fff !important;font-size:max(15px, 1em);}.ipsShareLink--internal{background:#008b00;}.ipsShareLink--deviantart{background:#00e59b;}.ipsShareLink--email{background:#444;}.ipsShareLink--facebook{background:#1778F2;}.ipsShareLink--linkedin{background:#0a66c2;}.ipsShareLink--reddit{background:#FF4500;}.ipsShareLink--vk{background:#507299;}.ipsShareLink--weibo{background:#D32F2F;}.ipsShareLink--youtube{background:#ff0000;}.ipsShareLink--foursquare{background:#2D5BE3;}.ipsShareLink--etsy{background:#F56400;}.ipsShareLink--flickr{background:#ff0084;}.ipsShareLink--github{background:#24292f;}.ipsShareLink--instagram{background:#E13D62;}.ipsShareLink--pinterest{background:#BD081C;}.ipsShareLink--slack{background:#42C299;}.ipsShareLink--xing{background:#B0D400;}.ipsShareLink--tumblr{background:#36465D;}.ipsShareLink--twitch{background:#772ce8;}.ipsShareLink--discord{background:#5865f2;}.ipsShareLink--x{background:#000000;}.ipsWidget .cStatusUpdateWidget .ipsComposeArea_dummy{padding:7px 10px;font-size:var(--i-font-size_-1);}.ipsWidget .cStatusUpdateWidget .ipsComposeArea_dummy i[class*=" fa-"]{margin-inline-end:5px;}.ipsWidget .cStatusUpdateWidget [data-role="attachmentArea"]{display:none !important;}.cTagPopup .ipsTags{margin-top:10px;}#elGuestTerms{background:var(--i-background_1);border-top:1px solid color-mix(in srgb, var(--i-color_root) 10%, transparent);background-clip:var(--if-light,padding-box) var(--if-dark,border-box);position:sticky;bottom:0;padding:1.3em 0;z-index:4000;}:where([data-ips-scheme="dark"]) #elGuestTerms{background:var(--i-background_3);}@media (max-width:979px){#elGuestTerms{bottom:var(--i-mobileFooter--he);}}.cGuestTeaser_social{width:250px;margin-bottom:5px;}.grecaptcha-badge{z-index:10;}@media (max-width:979px){body:not(:has(.ipsEditor:focus-within)) .grecaptcha-badge{bottom:calc(var(--i-mobileFooter--he) + 10px) !important;}}@media (min-width:980px){body:has(#elGuestTerms[style*="block"]) .grecaptcha-badge{bottom:120px !important;}}.cColorChoices li{position:relative;}.cColorChoice_chooser{background-color:var(--_ba-co);width:42px;height:36px;display:block;position:relative;border-radius:4px;}.cColorChoices [type="radio"]{position:absolute;width:100%;height:100%;z-index:1;appearance:none;cursor:pointer;}.cColorChoices [type="radio"]:checked + .cColorChoice_chooser{outline:2px solid currentColor;outline-offset:1px;}.cClubEmbedHeader{position:relative;height:180px;}.cClubEmbedHeader.cClubEmbedHeaderNoPhoto, .cClubEmbedHeader.cClubEmbedHeaderNoPhoto span{height:120px;}.cClubEmbedHeader .ipsUserPhoto{position:absolute;left:50%;top:50%;transform:translate(-50%, -50%);border:2px solid #fff;}.cNotifcationPrompt{position:relative;background:var(--i-background_dark);color:#fff;}.cNotifcationPrompt_title{color:inherit;}.cNotifcationPrompt_text{opacity:0.7;}.cNotifcationPrompt_icon{display:block;background-image:url('../resources/core_d0e70b4cbb9ab8afb1bc1065a3f8487a_notification.svg');background-repeat:no-repeat;background-size:cover;aspect-ratio:1;}.cNotifcationPrompt_dismiss{background:hsl(0 0% 0% / .6);width:16px;height:16px;border-radius:16px;line-height:16px;text-align:center;color:#fff;font-size:12px;position:absolute;top:9px;inset-inline-end:9px;}.cContentMessageEditor.cContentMessageEditor--private .ipsEditor{border-color:var(--i-color_negative);--bo-sh:color-mix(in srgb, var(--i-color_negative) 15%, transparent);box-shadow:var(--bo-sh) 0px 0px 0px 6px;}.cContentMessageEditor.cContentMessageEditor--public .ipsEditor{border-color:var(--i-color_positive);--bo-sh:color-mix(in srgb, var(--i-color_positive) 15%, transparent);box-shadow:var(--bo-sh) 0px 0px 0px 6px;}.cLogin_single{max-width:500px;margin:0 auto;}.Line truncated
@@ -1 +1 @@
*{margin:0;padding:0;}*, ::before, ::after{box-sizing:border-box;min-width:0;min-height:0;}html{-webkit-text-size-adjust:100%;accent-color:var(--i-primary);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;}hr{color:inherit;}hr, iframe, fieldset{border-width:0;}iframe:where([src*="youtube."], [src*="youtube-nocookie."], [src*="vimeo."]){width:100%;height:auto;aspect-ratio:16/9;}img, svg{border:0;display:inline-block;max-width:100%;height:auto;vertical-align:top;}:where(img::before){display:block;overflow:hidden;height:100%;}h1, h2, h3, h4, h5, h6{font-size:inherit;font-weight:inherit;}b, strong{font-weight:bolder;}menu, ol, ul, summary{list-style-type:none;}blockquote, q{quotes:none;}table{border-collapse:collapse;border-spacing:0;}input, textarea, select, button{background:none;border:0;color:inherit;font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;text-align:inherit;text-transform:inherit;}textarea, select{-webkit-appearance:none;appearance:none;box-shadow:none;}textarea{display:block;width:100%;}select{cursor:pointer;}[type="search"]{-webkit-appearance:none;appearance:none;}[type="date"], [type="time"]{accent-color:currentColor;}::placeholder{color:inherit;opacity:.5;}button, [type="submit"], summary{-webkit-appearance:none;appearance:none;cursor:pointer;touch-action:manipulation;-webkit-user-select:none;user-select:none;}button{text-align:inherit;}details summary::-webkit-details-marker{display:none;}:focus{outline-color:transparent;}:focus-visible{outline:var(--i-outline-width) var(--i-outline-style) var(--i-outline-color);outline-offset:var(--i-outline-offset);}address{font-style:inherit;}dialog{border-width:0;margin:auto;}dialog:not([open]){display:none !important;}.sr-only, .ipsInvisible{border:0 !important;clip:rect(1px, 1px, 1px, 1px) !important;clip-path:inset(50%) !important;height:1px !important;margin:-1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;white-space:nowrap !important;width:1px !important;}[hidden]{display:none !important;}:root{--light__i-primary:hsl(220 85% 50%);--light__i-primary-relative-l:33;--light__i-secondary:hsl(220 49% 13%);--light__i-secondary-relative-l:10;--light__i-base:oklch(calc(var(--light__i-base-l) * 1%) calc(var(--light__i-base-c) * 1%) var(--light__i-base-h));--light__i-base-l:100;--light__i-base-c:30;--light__i-base-h:260;--dark__i-primary:hsl(215 85% 50%);--dark__i-primary-relative-l:37;--dark__i-secondary:hsl(215 18% 26%);--dark__i-secondary-relative-l:24;--dark__i-base:oklch(calc(var(--dark__i-base-l) * 1%) calc(var(--dark__i-base-c) * 1%) var(--dark__i-base-h));--dark__i-base-l:30;--dark__i-base-c:20;--dark__i-base-h:260;--set__i-default-scheme:system;--set__i-change-scheme:1;--set__i-logo--fo-fa:var(--i-font-family);--set__i-logo--fo-we:500;--set__i-desktop-logo--fo-si:18;--set__i-sidebar-ui-logo--fo-si:20;--set__i-mobile-logo--fo-si:18;--set__logo-light:;--set__logo-dark:;--set__i-logo--he:70;--set__i-sidebar-ui-logo--he:70;--set__mobile-logo-light:;--set__mobile-logo-dark:;--set__i-mobile-logo--he:70;--set__i-font-family:var(--i-font-family_system-ui);--set__i-font-size:14;--set__i-user-content-font-size:110;--set__i-position-logo:4;--set__i-position-navigation:5;--set__i-position-user:6;--set__i-position-breadcrumb:7;--set__i-position-search:9;--set__i-header-top--he:50;--set__i-header-primary--he:100;--set__i-header-secondary--he:50;--set__i-nav-bar-icons:0;--set__i-mobile-header--he:60;--set__i-sidebar-ui-header--he:65;--set__i-sidebar-width:350;--set__i-flip-sidebar:0;--set__i-sticky-sidebar:1;--set__i-layout-width:1500;--set__i-avatar-radius:1;--set__i-design-border:1;--set__i-design-radius:8;--set__i-design-shadow:2;--set__i-link-panels:1;--set__i-mobile-icons-location:footer;--set__i-mobile-footer-labels:1;--light__i-color_root:var(--i-base-contrast_3);--dark__i-color_root:var(--i-base-contrast_4);--light__i-color_soft:var(--i-base-contrast_1);--dark__i-color_soft:var(--i-base-contrast_2);--light__i-color_hard:var(--i-base-contrast_6);--dark__i-color_hard:var(--i-base-contrast_6);--light__i-link--co:var(--i-base-contrast_5);--dark__i-link--co:var(--i-base-contrast_5);--light__i-link-hover--co:var(--i-color_primary);--dark__i-link-hover--co:var(--i-color_primary);--light__i-headerTop--ba-co:var(--i-base-contrast_5);--dark__i-headerTop--ba-co:var(--i-base_3);--light__i-headerTop--co:var(--i-base_1);--dark__i-headerTop--co:var(--i-base-contrast_6);--light__i-headerPrimary--ba-co:var(--i-base-contrast_4);--dark__i-headerPrimary--ba-co:var(--i-base_3);--light__i-headerPrimary--co:var(--i-base_1);--dark__i-headerPrimary--co:var(--i-base-contrast_6);--light__i-headerSecondary--ba-co:var(--i-base-contrast_5);--dark__i-headerSecondary--ba-co:var(--i-base_4);--light__i-headerSecondary--co:var(--i-base_1);--dark__i-headerSecondary--co:var(--i-base-contrast_5);--light__i-headerMobile--ba-co:var(--i-base_1);--dark__i-headerMobile--ba-Line truncated
*{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
View File
@@ -52,7 +52,7 @@ if(this._initialURL===state?.url){this.hideResults();}else if(this._initialURL==
return this._baseURL+params.join('&');},async _loadResults(url){if(this._page.length){this._page.find('[data-role="eventsOverview"]').hide();this._page.find('[data-role="searchResultsWrapper"]').show();}
this._resultsContainer.removeClass('ipsHide').html(this.getPlaceholders(6));if(ips.getSetting('mapProvider')!=='none'){this._mapContainer.addClass('cEvents__searchMap--loading').show();}
this._currentUrl=url;const response=await ips.fetch(url);if(response.count){this._resultsContainer.html(response.content);this._noResults.addClass('ipsHide');this._updateMap(_.extend({},this._markers,response.markers));if(response.totalCount>(response.count+this._offset)){this._loadMore.show();this._noMore.hide();}else{this._loadMore.hide();this._noMore.hide();}}else{this._resultsContainer.html('').addClass('ipsHide');this._noResults.removeClass('ipsHide');this._loadMore.hide();this._noMore.hide();this._mapContainer.hide();}
if(response.virtual){this._mapContainer.hide();}
if(response.virtual||!response.markerCount){this._mapContainer.hide();}
$(document).trigger('contentChange',[this._resultsContainer]);},_updateMap(markers){if(ips.getSetting('mapProvider')==='google'){this._updateGoogleMap(markers);}else if(ips.getSetting('mapProvider')==='mapbox'){this._updateMapboxMap(markers);}else{this._mapContainer.hide();}},_updateGoogleMap(markers){if(!this._map){this._map=new window.google.maps.Map(document.querySelector('[data-role="searchResultsMap"]'));this._mapMarkers=[];}
this._mapContainer.removeClass('cEvents__searchMap--loading');if(this._mapMarkers.length){for(let marker of Object.values(this._mapMarkers)){marker.setMap(null);}
this._mapMarkers=[];}
+3 -3
View File
@@ -15,7 +15,7 @@ this._addChoice(question,maxCid+1);ips.utils.anim.go('fadeIn',question.find('[da
choice.animationComplete(function(){choice.remove();_.each(question.find('[data-choiceID]'),function(item,idx){$(item).attr('data-choiceID',idx+1).find('[data-role="choiceNumber"]').text(idx+1);});self._checkChoiceButton(question);});ips.utils.anim.go('fadeOut fast',choice);},_buildQuestion:function(data,qid){var choices=[];if(_.isArray(data.choices)&&data.choices.length){for(var i=0;i<data.choices.length;i++){choices.push(this._getChoiceHTML(i+1,qid,data.choices[i].title));}}else if(_.isObject(data.choices)){for(var i in data.choices){choices.push(this._getChoiceHTML(i,qid,data.choices[i].title));}}
this.scope.find('[data-role="pollContainer"]').append(ips.templates.render('core.pollEditor.question',{pollName:this._name,multiChoice:data.multiChoice,questionID:qid,question:data.title,choices:choices.join(''),removeQuestion:!(qid===1)}));},_addQuestion:function(qid){var choices=[];choices.push(this._getChoiceHTML(1,qid));choices.push(this._getChoiceHTML(2,qid));this.scope.find('[data-role="pollContainer"]').append(ips.templates.render('core.pollEditor.question',{pollName:this._name,questionTitle:ips.getString('questionTitle',{id:qid}),questionID:qid,choices:choices.join(''),removeQuestion:!(qid===1)}));},_addChoice:function(question,cid){var html=this._getChoiceHTML(cid,question.attr('data-questionID'),'');question.find('[data-role="choices"]').append(html);},_getChoiceHTML:function(cid,qid,name){return ips.templates.render('core.pollEditor.choice',{choiceID:cid,questionID:qid,pollName:this._name,choiceTitle:name});},_checkQuestionButton:function(){var questions=this.scope.find('[data-questionID]');this.scope.find('[data-action="addQuestion"]').toggleClass('ipsButton--disabled',(questions.length>=this._maxQuestions));},_checkChoiceButton:function(questionScope){var choices=questionScope.find('[data-choiceID]');questionScope.find('[data-action="addChoice"]').toggleClass('ipsButton--disabled',(choices.length>=this._maxChoices));questionScope.find('[data-choiceID] [data-action="removeChoice"]').toggleClass('ipsButton--disabled',(choices.length===2));}});}(jQuery,_));;
;(function($,_,undefined){"use strict";ips.controller.register('core.front.core.profileCompletion',{initialize:function(){this.on('click','[data-role="dismissProfile"]',this.dismissProfile);},dismissProfile:function(e){e.preventDefault();var self=this;ips.getAjax()(ips.getSetting('baseURL')+'index.php?app=core&module=system&controller=settings&do=dismissProfile').done(function(response){self.scope.animate({opacity:"0"},'fast',function(){self.scope.hide();});});}});}(jQuery,_));;
;(function($,_,undefined){"use strict";ips.controller.register('core.front.core.reviewForm',{initialize:function(){this.on('click','[data-action="writeReview"]',this.toggleReview);},toggleReview:function(e){e.preventDefault();this.scope.find('[data-role="reviewIntro"]').hide();this.scope.find('[data-role="reviewForm"]').show();}});}(jQuery,_));;
;(function($,_,undefined){"use strict";ips.controller.register('core.front.core.reviewForm',{initialize:function(){this.on('click','[data-action="writeReview"]',this.toggleReview);},toggleReview:function(e){this.scope.find('[data-role="reviewIntro"]').attr('hidden','');this.scope.find('[data-role="reviewForm"]').removeAttr('hidden');}});}(jQuery,_));;
;(function($,_,undefined){"use strict";ips.controller.register('core.front.core.tagEditor',{_minTags:null,_maxTags:null,_count:0,_tagEditID:'',initialize:function(){this.on('click','[data-action="removeTag"]',this.removeTag);this.on(document,'tagsUpdated',this.tagsUpdated);this.setup();},setup:function(){this._tagEditID=this.scope.attr('data-tagEditID');this._minTags=this.scope.attr('data-minTags')||null;this._maxTags=this.scope.attr('data-maxTags')||null;this._setCount();this._checkMinMax();},_destroy:function(){if($('#elTagEditor_'+this._tagEditID+'_menu').length){$('#elTagEditor_'+this._tagEditID+'_menu').remove();}},tagsUpdated:function(e,data){if(data.tagEditID!==this._tagEditID){return;}
this.scope.find('.ipsTags__item:not(.ipsTags__item--edit)').remove();this.scope.prepend(data.tags);var editablePrefix=$('body').find('[data-editablePrefix]');if(editablePrefix.length){if(data.prefix){editablePrefix.html(data.prefix).removeClass('ipsHide');}else{editablePrefix.html('').addClass('ipsHide');}}else if(data.prefix.length){this.scope.prepend(data.prefix);}
this._setCount();this._checkMinMax();ips.ui.flashMsg.show(ips.getString('tagsUpdated'));},removeTag:function(e){e.preventDefault();var self=this;var remove=$(e.currentTarget);var url=remove.attr('href');var tagContainer=remove.closest('.ipsTags__item');var tag=tagContainer.find('.ipsTags__tag');tagContainer.fadeOut('fast');this._count--;this._checkMinMax();ips.getAjax()(url,{bypassRedirect:true}).done(function(){ips.ui.flashMsg.show(ips.getString('tagRemoved'));setTimeout(function(){tagContainer.remove();},200);}).fail(function(jqXHR,textStatus,errorThrown){tagContainer.stop().show().css({opacity:"1"});self._count++;if(jqXHR.responseJSON){ips.ui.alert.show({type:'alert',icon:'warn',message:jqXHR.responseJSON,callbacks:{}});}});},_checkMinMax:function(){var allowRemove=!(this._minTags&&this._count<=this._minTags);this.scope.find('[data-action="removeTag"]').toggle(allowRemove).end().find('.ipsTags__item--deletable').toggleClass('ipsTags__item--deletable',allowRemove);this.scope.find('.ipsTags__item--edit').toggle(!(this._maxTags&&this._count>=this._maxTags));},_setCount:function(){var prefix=this._getPrefix();var count=this.scope.find('.ipsTags__item').length;if(prefix.length&&prefix.is(':visible')){count++;}
@@ -68,8 +68,8 @@ ips.utils.db.set('ipsDataLayer','login',{logged_in:1},false)}else{if(stored.logg
ips.utils.db.set('ipsDataLayer','login',{logged_in:0},false);}},uniqueId:function(){let s=i=>{return Math.floor((1+Math.random())*Math.pow(16,i)).toString(16).substring(1);};let time=Date.now();let sec=Math.floor(time/1000);let secString=sec.toString(16);secString=secString.substring(secString.length-8);let ms=(time-(sec*1000))*1000;let msString=(ms+0x100000).toString(16).substring(1);return secString+msString+s(1)+'.'+s(4)+s(4);},unsetOldUniqueKeys:function(){let Events=IpsDataLayerConfig._events;for(let eventKey in Events){let saved=ips.utils.db.get('ipsDataLayer',eventKey)||{};if(Object.keys(saved).length){Debug.log(`Found stored unique keys for the event '${eventKey}'`);Debug.log(saved);if(!saved.exp||saved.exp<=(Date.now()/1000)){Debug.log(`Removing expired stored unique keys for the event '${eventKey}'`);ips.utils.db.set('ipsDataLayer',eventKey,0,false);}}}},remoteFetchEvents:function(){let self=this;ips.getAjax()('?app=core&module=system&controller=ajax&do=getDataLayerEvents').done(function(response){for(let i in response){self.handleEvent({},response[i]);}});},});}(jQuery,_));;
;(function($,_,undefined){"use strict";ips.controller.register('core.front.core.contentMessage',{initialize:function(){this.on('change','#check_message_is_public',this.updateEditorBorder);this.setup();},setup:function(){this.scope.find('.ipsComposeArea_editor').addClass('cContentMessageEditor');this.updateEditorBorder();},updateEditorBorder:function(){if($('#check_message_is_public').is(":checked")){this.scope.find('.ipsComposeArea_editor').removeClass('cContentMessageEditor--private').addClass('cContentMessageEditor--public');}else{this.scope.find('.ipsComposeArea_editor').removeClass('cContentMessageEditor--public').addClass('cContentMessageEditor--private');}}});}(jQuery,_));;
;(function($,_,undefined){"use strict";ips.controller.register('core.front.core.moderation',{_editTimeout:0,_editingTitle:false,initialize:function(){this.on('submit','[data-role="moderationTools"]',this.moderationSubmit);this.on('mousedown','[data-role="editableTitle"]',this.editTitleMousedown);this.on('mouseup mouseleave','[data-role="editableTitle"]',this.editTitleMouseup);this.on('click','[data-role="editableTitle"]',this.editTitleMouseclick);},editTitleMousedown:function(e){var self=this;if(e.which!==1){return;}
this._editTimeout=setTimeout(function(){self._editingTitle=true;clearTimeout(this._editTimeout);var anchor=$(e.currentTarget);anchor.hide();var inputNode=$('<input/>').attr({type:'text'}).attr('data-role','editTitleField').val(anchor.text().trim());anchor.after(inputNode);inputNode.focus();inputNode.on('blur',function(){inputNode.addClass('ipsField_loading');if(inputNode.val()==''){inputNode.remove();anchor.show();self._editingTitle=false;}
this._editTimeout=setTimeout(function(){self._editingTitle=true;clearTimeout(this._editTimeout);var anchor=$(e.currentTarget);anchor.hide();var inputNode=$('<input/>').attr({type:'text'}).attr('data-role','editTitleField').val(anchor.text().trim());anchor.after(inputNode);inputNode.focus();inputNode.on('blur',function(){inputNode.addClass('ipsField_loading');const oldTitle=anchor.text().trim();const newTitle=inputNode.val().trim();if(newTitle===''||newTitle===oldTitle){inputNode.remove();anchor.show();self._editingTitle=false;}
else
{ips.getAjax()(anchor.attr('href'),{method:'post',data:{do:'ajaxEditTitle',newTitle:inputNode.val()}}).done(function(response){anchor.text(response);}).fail(function(response){ips.ui.alert.show({type:'alert',icon:'warn',message:response.responseJSON,});}).always(function(){inputNode.remove();anchor.show();self._editingTitle=false;});}});inputNode.on('keypress',function(e){if(e.keyCode==ips.ui.key.ENTER){e.stopPropagation();e.preventDefault();inputNode.blur();return false;}});inputNode.on('keydown',function(e){if(e.keyCode==ips.ui.key.ESCAPE){inputNode.remove();anchor.show();self._editingTitle=false;return false;}});},1000);},editTitleMouseup:function(e){clearTimeout(this._editTimeout);},editTitleMouseclick:function(e){if(this._editingTitle){e.preventDefault();}},moderationSubmit:function(e){if(this._editingTitle){e.preventDefault();}
{ips.getAjax()(anchor.attr('href'),{method:'post',data:{do:'ajaxEditTitle',newTitle}}).done(function(response){anchor.text(response);}).fail(function(response){ips.ui.alert.show({type:'alert',icon:'warn',message:response.responseJSON,});}).always(function(){inputNode.remove();anchor.show();self._editingTitle=false;});}});inputNode.on('keypress',function(e){if(e.keyCode==ips.ui.key.ENTER){e.stopPropagation();e.preventDefault();inputNode.blur();return false;}});inputNode.on('keydown',function(e){if(e.keyCode==ips.ui.key.ESCAPE){inputNode.remove();anchor.show();self._editingTitle=false;return false;}});},1000);},editTitleMouseup:function(e){clearTimeout(this._editTimeout);},editTitleMouseclick:function(e){if(this._editingTitle){e.preventDefault();}},moderationSubmit:function(e){if(this._editingTitle){e.preventDefault();}
var action=this.scope.find('[data-role="moderationAction"]').val();switch(action){case'delete':this._modActionDelete(e);break;case'move':this._modActionDialog(e,'move','narrow');break;case'hide':this._modActionDialog(e,'hide','narrow');break;case'split':this._modActionDialog(e,'split','wide');break;case'merge':this._modActionDialog(e,'merge','medium');break;case'tag':this._modActionDialog(e,'tag','narrow');break;case'untag':this._modActionDialog(e,'untag','narrow');break;default:$(document).trigger('moderationSubmitted');break;}},_modActionDelete:function(e){var self=this;var form=this.scope.find('[data-role="moderationTools"]');if(self._bypassDeleteCheck){return;}
e.preventDefault();var count=parseInt(this.scope.find('[data-role="moderation"]:checked').length)+parseInt(this.scope.find('[data-role="moderation"]:hidden').length);ips.ui.alert.show({type:'confirm',icon:'warn',message:(count>1)?ips.pluralize(ips.getString('delete_confirm_many'),count):ips.getString('delete_confirm'),callbacks:{ok:function(){$(document).trigger('moderationSubmitted');self._bypassDeleteCheck=true;self.scope.find('[data-role="moderationTools"]').submit();}}});},_modActionDialog:function(e,title,size){e.preventDefault();var form=this.scope.find('[data-role="moderationTools"]');var moveDialog=ips.ui.dialog.create({url:form.attr('action')+'&'+form.serialize().replace(/%5B/g,'[').replace(/%5D/g,']'),modal:true,title:ips.getString(title),forceReload:true,size:size});moveDialog.show();$(document).trigger('moderationSubmitted');}});}(jQuery,_));;
+1 -1
View File
@@ -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'>&nbsp;</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}}'>&nbsp;</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.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'>&nbsp;</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}}'>&nbsp;</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'>
+2 -12
View File
@@ -364,7 +364,7 @@ IPSCONTENT;
else:
$return .= <<<IPSCONTENT
<p class='i-color_soft i-text-align_center' data-role='noComments'>
<p class='ipsEmptyMessage' data-role='noComments'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'no_comments', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
@@ -404,17 +404,7 @@ IPSCONTENT;
if ( $event->commentForm() || $event->locked() || \IPS\Member::loggedIn()->restrict_post || \IPS\Member::loggedIn()->members_bitoptions['unacknowledged_warnings'] || !\IPS\Member::loggedIn()->checkPostsPerDay() ):
$return .= <<<IPSCONTENT
<div data-role='replyArea' class='ipsBox i-padding_3
IPSCONTENT;
if ( !$event->canComment() ):
$return .= <<<IPSCONTENT
cTopicPostArea_noSize
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
i-margin-top_3' id='replyForm'>
<div data-role='replyArea' class='ipsComposeAreaWrapper' id='replyForm'>
IPSCONTENT;
+42 -45
View File
@@ -1704,7 +1704,7 @@ IPSCONTENT;
if ( !$standalone ):
$return .= <<<IPSCONTENT
<div class='cGuestTeaser'>
<div class='cGuestTeaser i-margin-bottom_3'>
<h2 class='ipsTitle ipsTitle--h3'>
IPSCONTENT;
@@ -1779,7 +1779,6 @@ IPSCONTENT;
if ( !$standalone ):
$return .= <<<IPSCONTENT
<hr class="ipsHr i-margin-block_3">
</div>
IPSCONTENT;
@@ -2691,7 +2690,8 @@ IPSCONTENT;
$return = '';
$return .= <<<IPSCONTENT
<div class='ipsComposeArea i-padding_3'
<div class="ipsComposeAreaWrapper">
<div class='ipsComposeArea ipsComposeArea--review'
IPSCONTENT;
if ( \IPS\Member::loggedIn()->member_id ):
@@ -2702,14 +2702,14 @@ IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
>
<div class='ipsComposeArea__photo'>
<div class='ipsComposeArea__photo'>
IPSCONTENT;
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->userPhoto( \IPS\Member::loggedIn(), 'fluid' );
$return .= <<<IPSCONTENT
</div>
<div class='ipsComposeArea_editor'>
<form accept-charset='utf-8' class="ipsFormWrap ipsFormWrap--review" action="
<div class='ipsComposeArea_editor'>
<form accept-charset='utf-8' class="ipsFormWrap ipsFormWrap--review" action="
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $action->setQueryString( '_review', 1 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
@@ -2724,18 +2724,18 @@ IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
>
<input type="hidden" name="
<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="
<input type="hidden" name="
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $k, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
@@ -2744,43 +2744,43 @@ 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="
<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="
<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;
if ( !isset( \IPS\Widget\Request::i()->_review ) and \IPS\Member::loggedIn()->member_id ):
$return .= <<<IPSCONTENT
<div data-role='reviewIntro'>
<h3 class="i-margin-bottom_2"><strong class="i-color_hard i-font-weight_600">
<div data-role='reviewIntro'>
<h3 class="i-margin-bottom_2"><strong class="i-color_hard i-font-weight_600">
IPSCONTENT;
$sprintf = array(\IPS\Member::loggedIn()->name); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'review_intro_1', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'sprintf' => $sprintf ) );
@@ -2791,67 +2791,66 @@ IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'review_intro_2', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</span></h3>
<a href='#' class='ipsButton ipsButton--primary ipsButton--small ipsJS_show' data-action='writeReview'><i class="fa-regular fa-pen-to-square"></i><span>
<button type="button" class='ipsButton ipsButton--primary ipsButton--small' data-action='writeReview'><i class="fa-regular fa-pen-to-square"></i><span>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'write_a_review', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</span></a>
</div>
</span></button>
</div>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
<ul class='ipsForm ipsForm--vertical ipsForm--review
<ul class='ipsForm ipsForm--vertical ipsForm--review' data-role='reviewForm'
IPSCONTENT;
if ( !isset( \IPS\Widget\Request::i()->_review ) and \IPS\Member::loggedIn()->member_id ):
$return .= <<<IPSCONTENT
ipsJS_hide
hidden
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
' data-role='reviewForm'>
>
IPSCONTENT;
foreach ( $elements as $collection ):
$return .= <<<IPSCONTENT
IPSCONTENT;
foreach ( $collection as $input ):
$return .= <<<IPSCONTENT
{$input}
{$input}
IPSCONTENT;
endforeach;
$return .= <<<IPSCONTENT
IPSCONTENT;
endforeach;
$return .= <<<IPSCONTENT
IPSCONTENT;
endforeach;
$return .= <<<IPSCONTENT
<li class='ipsFieldRow'>
<div class='ipsFieldRow__content'>
<li class='ipsSubmitRow'>
<button type='submit' class='ipsButton ipsButton--primary'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'add_review', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</button>
</div>
</li>
</ul>
</form>
</li>
</ul>
</form>
</div>
</div>
</div>
IPSCONTENT;
@@ -3050,13 +3049,12 @@ IPSCONTENT;
if ( $error ):
$return .= <<<IPSCONTENT
<br>
<span class="i-color_warning">
<div class="ipsFieldRow__warning">
IPSCONTENT;
$val = "{$error}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</span>
</div>
IPSCONTENT;
@@ -3136,13 +3134,12 @@ IPSCONTENT;
if ( $error ):
$return .= <<<IPSCONTENT
<br>
<span class="i-color_warning">
<div class="ipsFieldRow__warning">
IPSCONTENT;
$val = "{$error}"; $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( $val, ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</span>
</div>
IPSCONTENT;
+128 -129
View File
@@ -246,7 +246,7 @@ $return .= <<<IPSCONTENT
<div class='i-flex i-align-items_center i-justify-content_space-between'>
<a href='
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $item->url()->setQueryString( array( 'do' => 'findComment', 'comment' => $day['commentId'] ) ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= \IPS\Theme\Template::htmlspecialchars( $item->shareableUrl( $day['commentId'] ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
' class='i-font-weight_600'>
IPSCONTENT;
@@ -5826,14 +5826,14 @@ IPSCONTENT;
$idField = $comment['comment']::$databaseColumnId;
$return .= <<<IPSCONTENT
<div class='i-padding_3 ipsEntry ipsEntry--recommended' data-commentID='
<div class='ipsEntry ipsEntry--simple ipsEntry--featuredComment' data-commentID='
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $id, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
'>
<div class='ipsColumns i-gap_3'>
<div class='ipsColumns__primary'>
<div class="ipsPhotoPanel i-margin-bottom_2">
<header class="ipsEntry__header">
<div class="ipsEntry__header-align">
<div class="ipsPhotoPanel">
IPSCONTENT;
@@ -5859,77 +5859,79 @@ $return .= <<<IPSCONTENT
' rel="nofollow" data-action='goToComment'>{$comment['comment']->dateLine()}</a></div>
</div>
</div>
<div class='ipsRichText ipsTruncate_2'>{$comment['comment']->truncated( TRUE )}</div>
IPSCONTENT;
if ( $comment['note'] ):
$return .= <<<IPSCONTENT
<div class='ipsEntry__recommendedNote'>
<p class='ipsRichText'>
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $comment['note'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</p>
IPSCONTENT;
if ( isset( $comment['featured_by'] ) ):
$return .= <<<IPSCONTENT
<p class='i-color_soft i-margin-top_2 i-link-color_inherit'>
IPSCONTENT;
$htmlsprintf = array($comment['featured_by']->link()); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'recommended_by', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'htmlsprintf' => $htmlsprintf ) );
$return .= <<<IPSCONTENT
</p>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
</div>
IPSCONTENT;
elseif ( isset( $comment['featured_by'] ) ):
$return .= <<<IPSCONTENT
IPSCONTENT;
$htmlsprintf = array($comment['featured_by']->link()); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'recommended_by', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'htmlsprintf' => $htmlsprintf ) );
$return .= <<<IPSCONTENT
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
</div>
<div class='i-basis_auto i-align-self_center'>
</header>
<div class='ipsEntry__post'>
<div class='ipsRichText ipsTruncate_2'>{$comment['comment']->truncated( TRUE )}</div>
IPSCONTENT;
if ( \IPS\IPS::classUsesTrait( $comment['comment'], 'IPS\Content\Reactable' ) and \IPS\Settings::i()->reputation_enabled ):
$return .= <<<IPSCONTENT
<div class='i-margin-top_2 i-flex'>
IPSCONTENT;
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->reactionOverview( $comment['comment'] );
$return .= <<<IPSCONTENT
</div>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
IPSCONTENT;
if ( $comment['note'] ):
$return .= <<<IPSCONTENT
<div class='ipsEntry__recommendedNote'>
<p>
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $comment['note'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</p>
IPSCONTENT;
if ( isset( $comment['featured_by'] ) ):
$return .= <<<IPSCONTENT
<p class='i-font-style_italic i-color_soft i-margin-top_1 i-link-color_inherit'>
IPSCONTENT;
$htmlsprintf = array($comment['featured_by']->link()); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'recommended_by', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'htmlsprintf' => $htmlsprintf ) );
$return .= <<<IPSCONTENT
</p>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
</div>
IPSCONTENT;
elseif ( isset( $comment['featured_by'] ) ):
$return .= <<<IPSCONTENT
IPSCONTENT;
$htmlsprintf = array($comment['featured_by']->link()); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'recommended_by', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'htmlsprintf' => $htmlsprintf ) );
$return .= <<<IPSCONTENT
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
</div>
</div>
</div>
@@ -5943,7 +5945,7 @@ IPSCONTENT;
return $return;
}
function featuredComments( $comments, $url, $titleLang='recommended_replies', $commentLang='__defart_comment' ) {
function featuredComments( $comments, $url, $titleLang='recommended_replies', $commentLang='__defart_comment', $ipsBox=true ) {
$return = '';
$return .= <<<IPSCONTENT
@@ -5952,7 +5954,17 @@ IPSCONTENT;
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $url, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
' class='ipsBox ipsRecommendedComments
' class='
IPSCONTENT;
if ( $ipsBox ):
$return .= <<<IPSCONTENT
ipsBox ipsBox--featuredComments
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
ipsRecommendedComments
IPSCONTENT;
if ( !\count( $comments ) ):
@@ -5964,7 +5976,22 @@ endif;
$return .= <<<IPSCONTENT
'>
<div data-role="recommendedComments">
<header class='ipsBox__header'>
<header class='
IPSCONTENT;
if ( $ipsBox ):
$return .= <<<IPSCONTENT
ipsBox__header
IPSCONTENT;
else:
$return .= <<<IPSCONTENT
ipsTitle ipsTitle--h5 i-padding_2 i-flex i-align-items_center i-justify-content_space-between
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
'>
<h2>
IPSCONTENT;
@@ -7616,6 +7643,12 @@ IPSCONTENT;
$return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "core/front/global/globalTemplate", "body:inside-start", [ $title,$html,$location ] );
$return .= <<<IPSCONTENT
<a href="#ipsLayout__main" class="ipsSkipToContent">
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'jump_to_content', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</a>
IPSCONTENT;
@@ -7706,12 +7739,6 @@ IPSCONTENT;
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->announcementTop( );
$return .= <<<IPSCONTENT
<a href="#ipsLayout_main" class="ipsSkipToContent">
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'jump_to_content', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</a>
IPSCONTENT;
@@ -8602,43 +8629,31 @@ IPSCONTENT;
if ( \IPS\Login::registrationType() != 'disabled' ):
$return .= <<<IPSCONTENT
<div class='i-text-align_center i-padding_3 cGuestTeaser'>
<div class='i-text-align_center cGuestTeaser'>
IPSCONTENT;
if ( $isReview ):
$return .= <<<IPSCONTENT
<h2 class='ipsTitle ipsTitle--h3'>
<h2 class='ipsTitle ipsTitle--h4'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'teaser_review_title_reg', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</h2>
<p class='i-color_soft i-margin-top_2'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'teaser_review_desc_reg', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</p>
IPSCONTENT;
else:
$return .= <<<IPSCONTENT
<h2 class='ipsTitle ipsTitle--h3'>
<h2 class='ipsTitle ipsTitle--h4'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'teaser_title_reg', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</h2>
<p class='i-color_soft i-margin-top_2'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'teaser_desc_reg', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</p>
IPSCONTENT;
@@ -8646,45 +8661,32 @@ endif;
$return .= <<<IPSCONTENT
<div class='ipsBox i-padding_3 i-margin-top_3'>
<div class='ipsFluid i-basis_400'>
<div class='cGuestTeaser_left'>
<h2 class='ipsTitle ipsTitle--h3'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'teaser_account', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</h2>
<p class='i-color_soft i-margin-bottom_3'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'teaser_account_desc', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</p>
<div class='ipsFluid i-basis_260 i-margin-top_3'>
<div>
IPSCONTENT;
if ( \IPS\Login::registrationType() == 'redirect' ):
$return .= <<<IPSCONTENT
<a href='
<a href='
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( \IPS\Settings::i()->allow_reg_target, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
' class='ipsButton ipsButton--primary ipsButton--small' target="_blank" rel="noopener">
' class='ipsButton ipsButton--primary ipsButton--wide' target="_blank" rel="noopener">
IPSCONTENT;
else:
$return .= <<<IPSCONTENT
<a href='
<a href='
IPSCONTENT;
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=register", null, "register", array(), 0 ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
$return .= <<<IPSCONTENT
' class='ipsButton ipsButton--primary ipsButton--small'
' class='ipsButton ipsButton--primary ipsButton--wide'
IPSCONTENT;
if ( \IPS\Login::registrationType() == 'normal' ):
@@ -8700,33 +8702,21 @@ IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'teaser_account_button', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</a>
</div>
<div class='cGuestTeaser_right'>
<h2 class='ipsTitle ipsTitle--h3'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'teaser_signin', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</h2>
<p class='i-color_soft i-margin-bottom_3'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'teaser_signin_desc', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</p>
<a href='
</div>
<div>
<a href='
IPSCONTENT;
$return .= htmlspecialchars( \IPS\Http\Url::internal( "app=core&module=system&controller=login", null, "login", array(), 0 )->addRef((string) $item->url() . '#replyForm'), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', TRUE );
@@ -8736,13 +8726,12 @@ IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'teaser_signin_button', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
" class='ipsButton ipsButton--primary ipsButton--small'>
" class='ipsButton ipsButton--secondary ipsButton--wide'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'teaser_signin_button', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</a>
</div>
</div>
</div>
</div>
@@ -8752,21 +8741,19 @@ IPSCONTENT;
else:
$return .= <<<IPSCONTENT
<div class='i-text-align_center i-padding_3'>
<h2 class='ipsTitle ipsTitle--h3'>
<div class='i-text-align_center'>
<h2 class='ipsTitle ipsTitle--h4'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'teaser_title_noreg', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</h2>
<p class='i-color_soft i-margin-top_2'>
<p class='i-color_soft i-margin-top_1'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'teaser_desc_noreg', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</p>
<br>
<br>
<a href='
IPSCONTENT;
@@ -8777,7 +8764,7 @@ IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'teaser_signin_button', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
" class='ipsButton ipsButton--secondary'>
" class='ipsButton ipsButton--primary i-margin-top_3'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'teaser_signin_button', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
@@ -20827,7 +20814,19 @@ $return .= <<<IPSCONTENT
IPSCONTENT;
if ( \count( $tags ) > 4 ):
if ( \count( $tags ) == 5 ):
$return .= <<<IPSCONTENT
IPSCONTENT;
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->tag( $tags[4], $tagEditUrl );
$return .= <<<IPSCONTENT
IPSCONTENT;
elseif ( \count( $tags ) > 4 ):
$return .= <<<IPSCONTENT
<li class='ipsTags__more ipsJS_show'>
+1 -1
View File
@@ -3996,7 +3996,7 @@ IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'editor_insert_existing_file', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</a></li>
</a>
</ul>
</li>
+10 -6
View File
@@ -3267,7 +3267,7 @@ IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
<section class="ipsEntry i-padding_3">
<section class="ipsEntry i-padding_2">
<div class="ipsEntry__post">
<div class="ipsRichText ipsRichText--user" data-controller="core.front.core.lightboxedImages">{$file->content()}</div>
@@ -3497,18 +3497,22 @@ IPSCONTENT;
if ( $field['location'] == 'tab' ):
$return .= <<<IPSCONTENT
<div id="ipsTabs_file_
<div id="ipsTabs_file_downloads_
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $field['key'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
_panel" class="ipsTabs__panel" role="tabpanel" aria-labelledby="ipsTabs_file_
_panel" class="ipsTabs__panel" role="tabpanel" aria-labelledby="ipsTabs_file_downloads_
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $field['key'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
" hidden>
<div class="ipsRichText" data-controller="core.front.core.lightboxedImages">
{$field['value']}
</div>
<section class="ipsEntry i-padding_2">
<div class="ipsEntry__post">
<div class="ipsRichText" data-controller="core.front.core.lightboxedImages">
{$field['value']}
</div>
</div>
</section>
</div>
IPSCONTENT;
+8
View File
@@ -4013,6 +4013,10 @@ IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $row->ui( 'css' ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
" data-rowid="
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $row->$idField, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
@@ -4046,6 +4050,10 @@ IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $row->ui( 'dataAttributes' ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
>
IPSCONTENT;
+2 -2
View File
@@ -1834,7 +1834,7 @@ $return .= <<<IPSCONTENT
<span>
IPSCONTENT;
$pluralize = array( $noteCount ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'num_customer_notes_uc', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) );
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'customer_notes', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
(
IPSCONTENT;
@@ -1892,7 +1892,7 @@ $return .= <<<IPSCONTENT
IPSCONTENT;
$pluralize = array( $noteCount ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'num_customer_notes_uc', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) );
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'customer_notes', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
(
IPSCONTENT;
+10 -54
View File
@@ -927,60 +927,6 @@ abstract class Comment extends Content
return Theme::i()->getTemplate( static::$commentTemplate[0][0], static::$commentTemplate[0][1], ( isset( static::$commentTemplate[0][2] ) ) ? static::$commentTemplate[0][2] : NULL )->$template( $this->item(), $this );
}
/**
* Users to receive immediate notifications
*
* @param int|array|null $limit LIMIT clause
* @param boolean $countOnly Just return the count
* @return Select|int
*/
public function notificationRecipients( int|array|null $limit=array( 0, 25 ), bool $countOnly=FALSE ): Select|int
{
/* Do we only want the count? */
if( $countOnly )
{
$count = 0;
$count += $this->author()->followersCount( 3, array( 'immediate' ), $this->mapped('date') );
if( IPS::classUsesTrait( $this->item(), 'IPS\Content\Followable' ) )
{
$count += $this->item()->followersCount( 3, array( 'immediate' ), $this->mapped('date') );
}
return $count;
}
$memberFollowers = $this->author()->followers( 3, array( 'immediate' ), $this->mapped('date'), NULL );
if( $memberFollowers !== NULL AND $memberFollowers !== 0 and IPS::classUsesTrait( $this->item(), 'IPS\Content\Followable' ) )
{
$unions = array(
$this->item()->followers( 3, array( 'immediate' ), $this->mapped('date'), NULL ),
$memberFollowers
);
return Db::i()->union( $unions, 'follow_added', $limit );
}
else if( IPS::classUsesTrait( $this->item(), 'IPS\Content\Followable' ) )
{
return $this->item()->followers( static::FOLLOW_PUBLIC + static::FOLLOW_ANONYMOUS, array( 'immediate' ), $this->mapped('date'), $limit, 'follow_added' );
}
else
{
return $memberFollowers;
}
}
/**
* Create Notification
*
* @param string|NULL $extra Additional data
* @return Notification
*/
protected function createNotification( string|null $extra=NULL ): Notification
{
return new Notification( Application::load( 'core' ), 'new_comment', $this->item(), array( $this ) );
}
/**
* Move Comment to another item
@@ -1764,6 +1710,16 @@ abstract class Comment extends Content
{
return NULL;
}
/**
* Custom where conditions used specifically for finding comments
*
* @return array|null
*/
public static function findCommentWhere() : array|null
{
return static::commentWhere();
}
/**
* Is a featured comment?
Loaded 100 of 115 files, more files were not shown because too many files have changed in this diff. Show more