Jump to content

Hi @Jimi Wikman I see your project posted in ips forum, I like it so much how you have page implemented, that I why I came here...inclusive maybe later you can work for my project too...

Well, now I am trying to implement page database to achieve homeworks support for some kids of my community, if you can take a look what I already asked in ips, if possible obtain some advise from you here...

 

Link to comment
https://beta.jimiwikman.se/forums/topic/4278-homework-database/
Share on other sites
  • Replies 60
  • Created
  • Last Reply
Expand topic overview

Top Posters In This Topic

Top Posters In This Topic

Most Popular Posts

Jimi Wikman
Jimi Wikman

In the database settings under Option you need to set the wikistyle edit on. The Edit own records indefinitely only affect the creator, but the wikistyle allow for edit by more than one person.

kmk
kmk

finally....thank so much

Jimi Wikman
Jimi Wikman

Anytime 🙂 The steps are as follows: Login to admin, then go to Pages -> Templates. This will show you the templates you have in Pages. Click "New" at the bottom of the list of tem

Posted Images

Expand topic overview

Featured Replies

Hi @Jimi Wikman hope you fine.

I discovered one of that inconvenient visualization of my homework task page is the comment and custom field are placed at the footer, do you have way to move it to sidebar?

2 hours ago, kmk said:

Hi @Jimi Wikman hope you fine.

I discovered one of that inconvenient visualization of my homework task page is the comment and custom field are placed at the footer, do you have way to move it to sidebar?

Hi @kmk, it's getting there at least 🙂

The reason you see custom fields and comment form added at the bottom is because that is where we add the loop to spit out fields that are defined as "display at bottom". We can move this anywhere we want, or place individual fields where we want them in the template.

The comment section is also a section of code that you can move if you like.

Of course 🙂

For comments, you look for this code:

<!-- Comments / Reviews -->
{{if $commentsAndReviews}}
	<a id="replies"></a>
	<h2 class='ipsHide'>{lang="user_feedback"}</h2>
	<div class='ipsResponsive_pull'>
		{$commentsAndReviews|raw}
	</div>
{{endif}}

then for the output of the custom fields you look for this:
 

	{{if $bottomFields = $record->customFieldsForDisplay('display_bottom')}}
		<hr class='ipsHr ipsClear ipsClearfix'>
		{{foreach $bottomFields as $fieldId => $fieldValue}}
			{{if $fieldValue}}
				{$fieldValue|raw}
			{{endif}}
		{{endforeach}}
	{{endif}}

 

On 3/5/2021 at 4:08 AM, Jimi Wikman said:

<!-- Comments / Reviews --> {{if $commentsAndReviews}} <a id="replies"></a> <h2 class='ipsHide'>{lang="user_feedback"}</h2> <div class='ipsResponsive_pull'> {$commentsAndReviews|raw} </div> {{endif}}

I found this code in record, then which code I have to add to change to display in sidebar?

<div class='ipsPageHeader ipsBox ipsResponsive_pull ipsPadding ipsClearfix'>
	<div class='ipsFlex ipsFlex-ai:center ipsFlex-fw:wrap ipsGap:4'>
		<div class='ipsFlex-flex:11'>
			<h1 class='ipsType_pageTitle ipsContained_container'>
				{{if $record->locked()}}<span><i class='fa fa-lock'></i></span> {{endif}}

				{{if $record->isFutureDate() || $record->mapped('pinned') || $record->mapped('featured') || $record->hidden() === -1 || $record->hidden() === 1 || $record->hidden() === -2}}
					{{if $record->isFutureDate()}}
						<span><span class="ipsBadge ipsBadge_icon ipsBadge_warning" data-ipsTooltip title='{$record->futureDateBlurb()}'><i class='fa fa-clock-o'></i></span></span>
					{{elseif $record->hidden() === -1}}
						<span><span class="ipsBadge ipsBadge_icon ipsBadge_warning" data-ipsTooltip title='{$record->hiddenBlurb()}'><i class='fa fa-eye-slash'></i></span></span>
					{{elseif $record->hidden() === -2}}
						<span><span class="ipsbadge ipsBadge_icon ipsBadge_warning" data-ipsTooltip title='{$record->deletedBlurb()}'><i class='fa fa-trash'></i></span></span>
					{{elseif $record->hidden() === 1}}
						<span><span class="ipsBadge ipsBadge_icon ipsBadge_warning" data-ipsTooltip title='{lang="pending_approval"}'><i class='fa fa-warning'></i></span></span>
					{{endif}}
					{{if $record->mapped('pinned')}}
						<span><span class="ipsBadge ipsBadge_icon ipsBadge_positive" data-ipsTooltip title='{lang="pinned"}'><i class='fa fa-thumb-tack'></i></span></span>
					{{endif}}
					{{if $record->mapped('featured')}}
						<span><span class="ipsBadge ipsBadge_icon ipsBadge_positive" data-ipsTooltip title='{lang="featured"}'><i class='fa fa-star'></i></span></span>
					{{endif}}
				{{endif}}
				
				{{if $record->prefix() OR ( $record->canEdit() AND $record::canTag( NULL, $record->container() ) AND $record::canPrefix( NULL, $record->container() ) )}}
					<span {{if !$record->prefix()}}class='ipsHide'{{endif}} {{if ( $record->canEdit() AND $record::canTag( NULL, $record->container() ) AND $record::canPrefix( NULL, $record->container() ) )}}data-editablePrefix{{endif}}>
						{template="prefix" group="global" app="core" params="$record->prefix( TRUE ), $record->prefix()"}
					</span>
				{{endif}}
				{{if $record->canEditTitle()}}
					<span class='ipsType_break ipsContained' data-controller="core.front.core.moderation">
						<span data-role="editableTitle" title='{lang="click_hold_edit"}'>{$record->_title}</span>
					</span>
				{{else}}
					<span class='ipsType_break ipsContained'>{$record->_title}</span>
				{{endif}}
			</h1>
			{{if \count( $record->tags() ) OR ( $record->canEdit() AND $record::canTag( NULL, $record->container() ) )}}
				{template="tags" group="global" app="core" params="$record->tags(), FALSE, FALSE, ( $record->canEdit() AND $record::canTag( NULL, $record->container() ) ) ? $record->url() : NULL"}
			{{endif}}
		</div>
		<div class='ipsFlex-flex:00'>
			{{if $record::database()->options['reviews']}}
				<div>
					{template="rating" group="global" location="front" app="core" params="'large', $record->averageReviewRating(), \IPS\Settings::i()->reviews_rating_out_of, $record->memberReviewRating()"}   <span class='ipsType_normal ipsType_light'>({lang="num_reviews" pluralize="$record->record_reviews"})</span>
				</div>
			{{elseif $record->container()->allow_rating}}
				<div>{$record->rating()|raw}</div>
			{{endif}}
		</div>
	</div>

	<hr class='ipsHr'>
	<div class='ipsPageHeader__meta ipsFlex ipsFlex-jc:between ipsFlex-ai:center ipsFlex-fw:wrap ipsGap:3'>
		<div class='ipsFlex-flex:11'>
			<div class='ipsPhotoPanel ipsPhotoPanel_tiny ipsClearfix'>
				{template="userPhoto" app="core" group="global" params="$record->author(), 'tiny', $record->warningRef()"}
				<div>
					<p class='ipsType_reset ipsType_large ipsType_blendLinks'>
						{lang="content_record_started_by" htmlsprintf="$record->author()->link()"}
						{{if $record->editLine()}}
							<span class='ipsType_light ipsType_medium ipsType_reset'>
								({lang="edited_lc"})
							</span>
						{{endif}}
					</p>
					<ul class='ipsList_inline'>
						<li>{datetime="$record->record_publish_date"}</li>
						{{foreach $record->customFieldsForDisplay('display_top') as $fieldId => $fieldValue}}
							{{if $fieldValue}}
								{$fieldValue|raw}
							{{endif}}
						{{endforeach}}
					</ul>
				</div>
			</div>
		</div>
		<div class='ipsFlex-flex:00 ipsResponsive_hidePhone'>
			<div class='ipsFlex ipsFlex-ai:center ipsGap:3 ipsGap_row:0'>
				{{if !$record->container()->disable_sharelinks}}
					{template="shareButton" app="core" group="sharelinks" params="$record"}
				{{endif}}
				{template="promote" app="core" group="global" params="$record"}
				{template="follow" app="core" group="global" params="'cms', 'records'.$record::$customDatabaseId, $record->primary_id_field, $record->followersCount()"}
			</div>
		</div>
	</div>
</div>


	

{{if \count($record->getMessages())}}
	<div class='ipsSpacer ipsSpacer_top'>
		{template="contentItemMessages" group="global" app="core" params="$record->getMessages(), $record"}
	</div>
{{endif}}

<article class='ipsContained ipsSpacer_top ipsBox ipsResponsive_pull'>
	<div class='ipsClearfix ipsPadding '>
		{{if $record->record_image}}
			<div class="cCmsRecord_image">
				<img class="ipsImage" src="{file="$record->_record_image_thumb" extension="cms_Records"}">
			</div>
		{{endif}}
		<section class="ipsType_richText ipsContained ipsType_normal" data-controller='core.front.core.lightboxedImages'>{$record->_content|raw}</section>
		
		{{if $record->editLine()}}
			{$record->editLine()|raw}
		{{endif}}
		
		{{if $records = $record->getReciprocalItems()}}
			<br>
			{{foreach $records as $fieldId => $items}}
				{{$infoLineShown = FALSE;}}
				<ul class="ipsList_inline ipsList_csv ipsList_noSpacing">
				{{foreach $items as $item}}
					<li>{{if ! $infoLineShown}}{{$infoLineShown=TRUE;}}{lang="records_linking_to_me" sprintf="$item::database()->recordWord(0,TRUE), $record::database()->recordWord(1)"}: {{endif}}<a href="{$item->url()}">{$item->_title}</a></li>
				{{endforeach}}
				</ul>
			{{endforeach}}
		{{endif}}
	</div>
	{{if $bottomFields = $record->customFieldsForDisplay('display_bottom')}}
		<hr class='ipsHr ipsClear ipsClearfix'>
		<div class="ipsType_richText ipsPadding ipsType_normal" data-controller='core.front.core.lightboxedImages'>
		{{foreach $bottomFields as $fieldId => $fieldValue}}
			{{if $fieldValue}}
				{$fieldValue|raw}
			{{endif}}
		{{endforeach}}
		</div>
	{{endif}}
	
  
  {{if member.inGroup('4, 15, 6')}}
    <!-- Shows if member is in group 'x' -->
  
	<div class='ipsItemControls'>
		{{if \IPS\IPS::classUsesTrait( $record, 'IPS\Content\Reactable' ) and settings.reputation_enabled}}
			{template="reputation" app="core" group="global" params="$record"}
		{{endif}}
		<ul class='ipsComment_controls ipsClearfix ipsItemControls_left'>
			{{if ( $record->canEdit() or $record->isFutureDate() or $record->canPin() or $record->canUnpin() or $record->canFeature() or $record->canUnfeature() or $record->canHide() or $record->canUnhide() or $record->canMove() or $record->canLock() or $record->canUnlock() or $record->canDelete() ) or ( $record->hidden() == -2 AND \IPS\Member::loggedIn()->modPermission('can_manage_deleted_content'))}}
				<li>
					<a href='#elentryActions_menu' id='elentryActions' class='ipsButton ipsButton_light ipsButton_verySmall ipsButton_fullWidth' data-ipsMenu>{lang="content_record_actions" sprintf="$record::database()->recordWord( 1, TRUE )"} <i class='fa fa-caret-down'></i></a>
					<ul id='elentryActions_menu' class='ipsMenu ipsMenu_auto ipsHide'>
						{{if $record->canEdit()}}
							<li class='ipsMenu_item'><a href='{$record->url('edit')}' title='{lang="edit"}'>{lang="edit"}</a></li>
						{{endif}}
						{{if $record->canReportOrRevoke() === TRUE}}
							<li class='ipsMenu_item'><a href='{$record->url('report')}' data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title="{lang="content_record_report" sprintf="$record::database()->recordWord( 1, TRUE )"}" data-ipsDialog-remoteSubmit data-ipsDialog-flashMessage="{lang="report_submit_success"}" title="{lang="content_record_report" sprintf="$record::database()->recordWord( 1, TRUE )"}">{lang="content_record_report" sprintf="$record::database()->recordWord( 1, TRUE )"}</a></li>
						{{endif}}
						{{if ( $record->canEdit() || $record->canReportOrRevoke() === TRUE ) AND ( (\IPS\Member::loggedIn()->modPermission('can_manage_deleted_content') AND $record->hidden() == -2 ) OR ( $record->isFutureDate() and $record::canFuturePublish( NULL, $record->container() ) ) OR $record->canFeature() OR $record->canUnfeature() OR $record->canPin() OR $record->canUnpin() OR $record->canHide() OR $record->canUnhide() OR $record->canLock() OR $record->canUnlock() OR $record->canMove() OR $record->canDelete() OR $record->canOnMessage( 'add' ) OR \IPS\Member::loggedIn()->modPermission('can_view_moderation_log') )}}
							<li class='ipsMenu_sep'><hr></li>
						{{endif}}
						{{if \IPS\Member::loggedIn()->modPermission('can_manage_deleted_content') AND $record->hidden() == -2}}
							<li class='ipsMenu_item'><a href='{$record->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'restore' ) )}' data-confirm data-confirmSubMessage='{lang="restore_as_visible_desc"}'>{lang="restore_as_visible"}</a></li>
							<li class='ipsMenu_item'><a href='{$record->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'restoreAsHidden' ) )}' data-confirm data-confirmSubMessage='{lang="restore_as_hidden_desc"}'>{lang="restore_as_hidden"}</a></li>
							<li class='ipsMenu_item'><a href='{$record->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'delete', 'immediate' => 1 ) )}' data-confirm data-confirmSubMessage='{lang="delete_immediately_desc"}'>{lang="delete_immediately"}</a></li>
						{{else}}
							{{if $record->isFutureDate() and $record::canFuturePublish( NULL, $record->container() )}}
								<li class='ipsMenu_item'><a href='{$record->url('moderate')->csrf()->setQueryString( array( 'action' => 'publish' ) )}' data-confirm title='{lang="publish_now"}'>{lang="publish"}</a></li>
							{{endif}}
							{{if $record->canFeature()}}
								<li class='ipsMenu_item'><a href='{$record->url('moderate')->csrf()->setQueryString( array( 'action' => 'feature' ) )}' title='{lang="feature_title_record" sprintf="$record::database()->recordWord(1)"}'>{lang="feature"}</a></li>
							{{endif}}
							{{if $record->canUnfeature()}}				
								<li class='ipsMenu_item'><a href='{$record->url('moderate')->csrf()->setQueryString( array( 'action' => 'unfeature' ) )}' title='{lang="unfeature_title_record" sprintf="$record::database()->recordWord(1)"}'>{lang="unfeature"}</a></li>
							{{endif}}
							{{if $record->canPin()}}				
								<li class='ipsMenu_item'><a href='{$record->url('moderate')->csrf()->setQueryString( array( 'action' => 'pin' ) )}' title='{lang="pin_title_record" sprintf="$record::database()->recordWord(1)"}'>{lang="pin"}</a></li>
							{{endif}}
							{{if $record->canUnpin()}}				
								<li class='ipsMenu_item'><a href='{$record->url('moderate')->csrf()->setQueryString( array( 'action' => 'unpin' ) )}' title='{lang="unpin_title_record" sprintf="$record::database()->recordWord(1)"}'>{lang="unpin"}</a></li>
							{{endif}}
							{{if $record->canHide()}}				
								<li class='ipsMenu_item'><a href='{$record->url('moderate')->csrf()->setQueryString( array( 'action' => 'hide' ) )}' title='{lang="hide_title_record" sprintf="$record::database()->recordWord(1)"}' data-ipsDialog data-ipsDialog-title="{lang="hide"}">{lang="hide"}</a></li>
							{{endif}}
							{{if $record->canUnhide()}}				
								<li class='ipsMenu_item'><a href='{$record->url('moderate')->csrf()->setQueryString( array( 'action' => 'unhide' ) )}' title='{{if $record->hidden() === 1}}{lang="approve_title_record" sprintf="$record::database()->recordWord(1)"}{{else}}{lang="unhide_title_record" sprintf="$record::database()->recordWord(1)"}{{endif}}'>{{if $record->hidden() === 1}}{lang="approve"}{{else}}{lang="unhide"}{{endif}}</a></li>
							{{endif}}
							{{if $record->canLock()}}				
								<li class='ipsMenu_item'><a href='{$record->url('moderate')->csrf()->setQueryString( array( 'action' => 'lock' ) )}' title='{lang="lock_title_record" sprintf="$record::database()->recordWord(1)"}'>{lang="lock"}</a></li>
							{{endif}}
							{{if $record->canUnlock()}}				
								<li class='ipsMenu_item'><a href='{$record->url('moderate')->csrf()->setQueryString( array( 'action' => 'unlock' ) )}' title='{lang="unlock_title_record" sprintf="$record::database()->recordWord(1)"}'>{lang="unlock"}</a></li>
							{{endif}}
							{{if $record->canMove()}}				
								<li class='ipsMenu_item'><a href='{$record->url('move')->csrf()}' data-ipsDialog data-ipsDialog-title="{lang="move"}"  title='{lang="move_title_record" sprintf="$record::database()->recordWord(1)"}'>{lang="move"}</a></li>
							{{endif}}
							{{if $record->canDelete()}}				
								<li class='ipsMenu_item'><a href='{$record->url('moderate')->csrf()->setQueryString( array( 'action' => 'delete' ) )}' data-confirm  title='{lang="delete_title_record" sprintf="$record::database()->recordWord(1)"}'>{lang="delete"}</a></li>
							{{endif}}
							{{if $record->canOnMessage( 'add' )}}
								<li class='ipsMenu_item'><a href='{$record->url('messageForm')->csrf()}' data-ipsDialog data-ipsDialog-title='{lang="add_message"}'>{lang="add_message"}</a></li>
							{{endif}}
							{{if \IPS\Member::loggedIn()->modPermission('can_view_moderation_log')}}
								<li class='ipsMenu_sep'><hr></li>
								<li class="ipsMenu_item"><a href='{$record->url()->csrf()->setQueryString( array( 'do' => 'modLog' ) )}' data-ipsDialog data-ipsDialog-title='{lang="moderation_history"}'>{lang="moderation_history"}</a></li>
							{{endif}}
						{{endif}}
					</ul>
				</li>
			{{elseif $record->canReportOrRevoke() === TRUE}}
				<li><a href='{$record->url('report')}' class='ipsButton ipsButton_link ipsButton_verySmall ipsButton_fullWidth' data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title="{lang="content_record_report" sprintf="$record::database()->recordWord( 1, TRUE )"}" data-ipsDialog-remoteSubmit data-ipsDialog-flashMessage="{lang="report_submit_success"}" title="{lang="content_record_report" sprintf="$record::database()->recordWord( 1, TRUE )"}">{lang="content_record_report" sprintf="$record::database()->recordWord( 1, TRUE )"}</a></li>
			{{endif}}
			
			{{if $record->canManageRevisions()}}
				<li><a href='{$record->url('revisions')}' class='ipsButton ipsButton_verySmall ipsButton_link ipsButton_fullWidth' title="{lang="content_view_revisions"}">{lang="content_view_revisions"}</a></li>
			{{endif}}
		</ul>
	</div>
  
  {{endif}}
  
</article>

<div class='ipsBox ipsPadding ipsResponsive_pull ipsResponsive_showPhone ipsMargin_top'>
	{{if !$record->container()->disable_sharelinks}}
		<div class='ipsResponsive_noFloat ipsResponsive_block ipsMargin_bottom:half'>
			{template="shareButton" app="core" group="sharelinks" params="$record, 'verySmall', 'light'"}
		</div>
	{{endif}}
	<div class='ipsResponsive_noFloat ipsResponsive_block'>
		{template="follow" app="core" group="global" params="'cms', 'records'.$record::$customDatabaseId, $record->primary_id_field, $record->followersCount()"}
	</div>
	{{if $record->canPromoteToSocialMedia() and ( $record instanceof \IPS\Content or $record instanceof \IPS\Node\Model )}}
		<div class='ipsResponsive_noFloat ipsResponsive_block ipsMargin_top:half'>
			{template="promote" app="core" group="global" params="$record"}
		</div>
	{{endif}}
</div>

<div class='ipsPager ipsSpacer_top'>
	<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">
				<span class="ipsPager_type">{lang="cms_back_to_category" sprintf="$record::database()->recordWord( 2 )"}</span>
			</a>
		{{else}}
			{{$page = \IPS\cms\Pages\Page::$currentPage;}}
			<a href="{$page->url()}" title="{lang="cms_back_to_category_with_title" sprintf="$page->_title"}" rel="up">
				<span class="ipsPager_type">{lang="cms_back_to_category" sprintf="$record::database()->recordWord( 2 )"}</span>
			</a>
		{{endif}}
	</div>
	{{if $nextUnread !== NULL}}
		<div class='ipsPager_next'>
			<a href="{$record->url()->setQueryString( array( 'do' => 'nextUnread' ) )}" title='{lang="cms_view_next_unread_title" sprintf="$record::database()->recordWord( 1 )"}'>
				<span class="ipsPager_type">{lang="cms_next_unread_title" sprintf="$record::database()->recordWord( 1 )"}</span>
			</a>
		</div>
	{{endif}}
</div>

<br>
{{if $commentsAndReviews}}
	<a id="replies"></a>
	<h2 class='ipsHide'>{lang="user_feedback"}</h2>
	<div class='ipsResponsive_pull'>
		{$commentsAndReviews|raw}
	</div>
{{endif}}

<br>
{{if $updateForm}}
	<div class='ipsAreaBackground_light ipsPad'>
		<h2 class='ipsType_sectionHead'>{lang="cms_front_update_fields" sprintf="$record::database()->recordWord( 1 )"}</h2>
		<ul class='ipsForm ipsForm_vertical'>
			{$updateForm|raw}
		</ul>
	</div>
{{endif}}

 

This template does not have a sidebar 🙂

We have to customize it to have a sidebar for you to move it.

Or do you mean in the widget area where you can place the navigation and other blocks?

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now