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": []
}
}