Skip to content
View in the app

A better way to browse. Learn more.

JimiWikman.se

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Homework database

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...

 

  • Replies 60
  • Views 12.1k
  • Created
  • Last Reply

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.

  • 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

Featured Replies

  • Author

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?

  • Owner
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.

  • Author
11 hours ago, Jimi Wikman said:

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

Please can you guide me to do that? If not so hesitate... 

  • Owner

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}}

 

  • Author

Do you mean these template?

Editing Database Students Homeworks 2021-03-05 19-18-14.png

  • Owner

Yes.

This will be in the template you define in Display Template group.

  • Author
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?

  • Owner

That depends a bit on your template.

Can you post the content of the template and we can figure it out together?

  • Author
<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}}

 

  • Owner

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?

Create an account or sign in to comment

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.