Jump to content


  • Posts

  • Joined

  • Days Won


V0RT3X last won the day on November 21

V0RT3X had the most liked content!

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

V0RT3X's Achievements


Apprentice (3/14)

  • Reacting Well
  • One Year In Rare
  • First Post Rare
  • Collaborator Rare
  • Conversation Starter

Recent Badges



  1. Hi guys, please read this topic ...
  2. As you know, our main project is in german, so INVISIONify was originally launched as an english counterpart, where other developers can offer their work via clubs too. Some changes have already been made on both sites in the last couple of weeks and now we are going one step further. The downloads and the associated english-language support have been completely outsourced to InvisionFocus. This has the advantage for us that we have everything on one site and don't have to switch back and forth or upload and update stuff twice. There is also already a club for english topics to avoid confusion between the languages. INVISIONify will in the future focus on a separate larger project. More info will follow soon. The next news is that selected plugins and themes will be availiable in the Marketplace too and can be installed directly via AdminCP, since users of the Invision Cloud Starter Package can't install extensions manually. That's it from us for now, we hope to see you soon on InvisionFocus
  3. Thx for the post, it's nice to hear people like our stuff
  4. Hi Thomas, I have seen that, but that's about the Who's Online widget that comes out of the box with IPS, the one shows who IS online at the moment. Not this one. Greetz V0RT3X
  5. You could hire a designer that updates it for you as custom work... https://invisioncommunity.com/third-party/providers/
  6. Like already explained HERE it looks like the owner of the rights to this theme is still Heosforo, no matter if he's not active here anymore. For this reason we will neither upgrade it to future IPS versions nor offer it for download. To make it short: MIND and CHOCOLATE themes are DEAD.
  7. Good morning guys, to make a long story short, invisionfocus.COM is dead. The owner left the invision community, but before that he sold the rights to all his applications, themes and even the domain to us. Sadly he "forgot" to hand out the files/devfolders for most of his work, instead we only got a zip with some old crap. So what I did this morning was taking an old version of this plugin (not the last one from the MP) I found on my HD, recreated all devfolders, updated it to 4.6.x and after some short testing it seems to work. You can see it live HERE on our homepage. And here is the download, hope you like it... If you find any bugs please let me know. Have a nice day
  8. I'll PM you when I'm back home in about 4hrs.
  9. The Marketplace still shows Heosforo as the owner of the Mind and Chocolate themes, so I don't even know if we are allowed to offer it here.
  10. V0RT3X


    That's all for it now, your bugtracker is finished and we hope that your users won't have to use it too often 😉 You could of course add a filter function to the overview page, the status field is prepared accordingly and how this works has already been explained in the recipe database. If something doesn'twork, or you have any other questions, we are happy to help you in the support forum.
  11. V0RT3X

    The CSS

    For the status field we have already defined several different values, but they all look the same at the moment. Especially with a bug tracker, the status of an error message should be immediately visible, for example with an alarm red for critical errors, green for fixed errors, and so on. Now we do all this in one washup with CSS. This is not only much easier and more elegant, the old font color tag is also no longer supported under modern HTML5. Now I have to say that it's actually the idea of IPS that you create your own CSS files for your pages (the Release Notes Tutorial explains exactly how this works). In this example I use the code directly in the templates. This has several advantages, among others I can be more individual. In the recordRow template you simply copy the code from above over the actual template code ... <style> .ipsBadge_style1 { --badge--background: #ff0000; --badge--color: #fff; border-radius: 2px; } .ipsBadge_style2 { --badge--background: #49bd5b; --badge--color: #fff; border-radius: 2px; } .ipsBadge_style3 { --badge--background: #606060; --badge--color: #fff; border-radius: 2px; } .ipsBadge_style4 { --badge--background: #ff9900; --badge--color: #fff; border-radius: 2px; } .ipsBadge_style5 { --badge--background: #3A8BC4; --badge--color: #fff; border-radius: 2px; } .ipsBadge_style6 { --badge--background: #FF69B4; --badge--color: #fff; border-radius: 2px; } </style> In the record Template exactly the same, only that I added this in the Style-Tag (just for the look) ... .ipsTabs { display: none; } This removes the Tabs menu that is superfluous in this case.
  12. Since we want to use our own view, we naturally need our own templates. You can also simply display the user-defined fields automatically at fixed positions, but that is exactly what we are NOT doing here. So now we create our own set for the listing and the record, we already prepared the field on the last page. To do this, go to AdminCP and select Pages -> Page Management -> Templates -> New. Now we add two new database templates: Name: bugtracker_display -> Record Name: bugtracker_listing -> Record Listing Now you should see two new template groups ... In the Bugtracker Display group replace the content of the record template with this code ... <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='ipsPos_right'> {$record->customFieldDisplayByKey('bugtracker_status', 'display')|raw} </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()"}&nbsp;&nbsp; <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> </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 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}} <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> </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}} In the Bugtracker Listing group replace the content of the recordRow template with this code ... {{$rowIds = array();}} {{foreach $rows as $row}} {{$idField = $row::$databaseColumnId;}} {{$rowIds[] = $row->$idField;}} {{endforeach}} {{$iposted = $table ? $table->contentPostedIn : array();}} {{foreach $rows as $row}} {{$idField = $row::$databaseColumnId;}} <li class="cCmsRecord_row ipsDataItem ipsDataItem_responsivePhoto {{if $row->unread()}}ipsDataItem_unread{{endif}} {{if method_exists( $row, 'tableClass' ) && $row->tableClass()}}ipsDataItem_{$row->tableClass()}{{endif}} {{if $row->hidden()}}ipsModerated{{endif}}" data-rowID='{$row->$idField}'> {{if member.member_id}} <div class='ipsDataItem_icon ipsPos_top'> {{if $row->unread()}} <a href='{$row->url( 'getNewComment' )}' title='{lang="first_unread_post"}' data-ipsTooltip> <span class='ipsItemStatus'><i class="fa {{if \in_array( $row->$idField, $iposted )}}fa-star{{else}}fa-circle{{endif}}"></i></span> </a> {{else}} {{if \in_array( $row->$idField, $iposted )}} <span class='ipsItemStatus ipsItemStatus_read ipsItemStatus_posted'><i class="fa fa-star"></i></span> {{else}} {{endif}} {{endif}} </div> {{endif}} <div class='ipsDataItem_main'> <h4 class='ipsDataItem_title ipsContained_container'> {{if $row->locked()}} <span><i class='fa fa-lock' data-ipsTooltip title='{lang="content_locked_record"}'></i></span> {{endif}} {{if $row->isFutureDate() || $row->mapped('pinned') || $row->mapped('featured') || $row->hidden() === -1 || $row->hidden() === 1}} {{if $row->isFutureDate()}} <span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_warning" data-ipsTooltip title='{$row->futureDateBlurb()}'><i class='fa fa-clock-o'></i></span></span> {{elseif $row->hidden() === -1}} <span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_warning" data-ipsTooltip title='{$row->hiddenBlurb()}'><i class='fa fa-eye-slash'></i></span></span> {{elseif $row->hidden() === 1}} <span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_warning" data-ipsTooltip title='{lang="pending_approval"}'><i class='fa fa-warning'></i></span></span> {{endif}} {{if $row->mapped('pinned')}} <span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_positive" data-ipsTooltip title='{lang="pinned"}'><i class='fa fa-thumb-tack'></i></span></span> {{endif}} {{if $row->mapped('featured')}} <span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_positive" data-ipsTooltip title='{lang="featured"}'><i class='fa fa-star'></i></span></span> {{endif}} {{endif}} {{if $row->prefix()}} <span>{template="prefix" group="global" app="core" params="$row->prefix( TRUE ), $row->prefix()"}</span> {{endif}} <span class='ipsContained ipsType_break'> <a href='{$row->url( "getPrefComment" )}'> {{if $row->_title or $row->_title == 0}}{$row->_title}{{else}}<em class="ipsType_light">{lang="content_deleted"}</em>{{endif}} </a> </span> {{if $row->commentPageCount() > 1}} {$row->commentPagination( array(), 'miniPagination' )|raw} {{endif}} </h4> <div class='ipsDataItem_meta ipsType_reset ipsType_light ipsType_blendLinks'> <span>{lang="bugtracker_reported"} {datetime="$row->_publishDate"}</span> {{if \count( $row->tags() )}} {template="tags" group="global" app="core" params="$row->tags(), true"} {{endif}} <br />{lang="content_record_last_updated"} <a href='{$row->url( 'getLastComment' )}' title='{lang="get_last_post"}'> {{if $row->database()->_comment_bump & \IPS\cms\Databases::BUMP_ON_COMMENT}} {{if $row->mapped('num_comments')}}{datetime="$row->mapped('last_comment')"}{{else}}{datetime="$row->mapped('date')"}{{endif}} {{else}} {{if $row->record_edit_time > 0}}{datetime="$row->record_edit_time"}{{else}}{datetime="$row->mapped('date')"}{{endif}} {{endif}} </a> </div> </div> <ul class='ipsDataItem_lastPoster ipsDataItem_withPhoto ipsType_blendLinks'> {$row->customFieldDisplayByKey('bugtracker_status', 'listing')|raw} </ul> <ul class='ipsDataItem_stats'> <div class='ipsResponsive_hidePhone ipsResponsive_hideTablet'> {{foreach $row->stats(TRUE) as $k => $v}} <li {{if \in_array( $k, $row->hotStats )}}class="ipsDataItem_stats_hot" data-text='{lang="hot_item"}' data-ipsTooltip title='{lang="hot_item_desc"}'{{endif}}> <span class='ipsDataItem_stats_number'>{number="$v"}</span> <span class='ipsDataItem_stats_type'>{lang="content_records_stat_{$k}" pluralize="$v"}</span> </li> {{endforeach}} {{if $row::database()->options['reviews']}} <li> <ul class='ipsList_inline ipsList_noSpacing_left ipsClearfix ipsRating ipsRating_{{if \IPS\Settings::i()->reviews_rating_out_of > 5}}small{{else}}large{{endif}}'> {{foreach range( 1, \IPS\Settings::i()->reviews_rating_out_of ) as $i}} <li class='{{if $row->averageReviewRating() >= $i}}ipsRating_on{{else}}ipsRating_off{{endif}}'> <i class='fa fa-star'></i> </li> {{endforeach}} </ul> </li> {{elseif $row->container()->allow_rating}} {template="rating" group="global" location="front" app="core" params="'large', $row->rating_value, \IPS\Settings::i()->reviews_rating_out_of"} {{endif}} </div> </ul> {{if $table and $table->canModerate()}} <div class='ipsDataItem_modCheck'> <span class='ipsCustomInput'> <input type='checkbox' data-role='moderation' name="moderate[{$row->$idField}]" data-actions="{expression="implode( ' ', $table->multimodActions( $row ) )"}" data-state='{{if $row->tableStates()}}{$row->tableStates()}{{endif}}'> <span></span> </span> </div> {{endif}} </li> {{endforeach}} The easiest way to see what exactly happened here is to compare these two templates with the originals. You don't have to do this line by line, of course, but there are programs like WinMerge that will show you this automatically. You can see exactly what was removed and what was added. What exactly is explained by the code itself. And because you can follow it by yourself, the learning effect is much bigger than if we would list a step-by-step changelog here 😉
  13. After you have specified the selection options on the last page, we only need to define how we want them to appear in the listing and detail view of the bugs. This is done via the Display options tab and looks like this ... Show in listing template = Yes Listing View Format = Custom Listing Custom Format {{if $formValue}} {{$items=explode(',',$formValue);}} {{foreach $items as $item}} {{if $item=="bugtracker_found"}} <span class='ipsBadge_large ipsBadge ipsBadge_style1'>{lang="$item"}</span> {{elseif $item=="bugtracker_fixed"}} <span class='ipsBadge_large ipsBadge ipsBadge_style2'>{lang="$item"}</span> {{elseif $item=="bugtracker_cant_reproduce"}} <span class='ipsBadge_large ipsBadge ipsBadge_style3'>{lang="$item"}</span> {{elseif $item=="bugtracker_in_progress"}} <span class='ipsBadge_large ipsBadge ipsBadge_style4'>{lang="$item"}</span> {{elseif $item=="bugtracker_answer"}} <span class='ipsBadge_large ipsBadge ipsBadge_style5'>{lang="$item"}</span> {{elseif $item=="bugtracker_no_bug"}} <span class='ipsBadge_large ipsBadge ipsBadge_style6'>{lang="$item"}</span> {{endif}} {{endforeach}} {{endif}} Show in display template = Yes Display View Format = Custom Display Custom Format {{if $formValue}} {{$items=explode(',',$formValue);}} {{foreach $items as $item}} {{if $item=="bugtracker_found"}} <span class='ipsBadge_large ipsBadge ipsBadge_style1'>{lang="$item"}</span> {{elseif $item=="bugtracker_fixed"}} <span class='ipsBadge_large ipsBadge ipsBadge_style2'>{lang="$item"}</span> {{elseif $item=="bugtracker_cant_reproduce"}} <span class='ipsBadge_large ipsBadge ipsBadge_style3'>{lang="$item"}</span> {{elseif $item=="bugtracker_in_progress"}} <span class='ipsBadge_large ipsBadge ipsBadge_style4'>{lang="$item"}</span> {{elseif $item=="bugtracker_answer"}} <span class='ipsBadge_large ipsBadge ipsBadge_style5'>{lang="$item"}</span> {{elseif $item=="bugtracker_no_bug"}} <span class='ipsBadge_large ipsBadge ipsBadge_style6'>{lang="$item"}</span> {{endif}} {{endforeach}} {{endif}} As Display setting we choose Above the item content and as a small goodie we set Editable when viewing a record to yes. Right now you are finished with the field, please check the steps on this and the last two pages again to check if everything's fine.
  14. The user, or later the staff member, should be able to assign a processing status to each error and to change it. For this purpose, we have created a select box on the last page, which we will now fill with information, which looks like this in the AdminCP ... Now it is important that you insert all keys and values exactly as I list them here ... bugtracker_found Bug bugtracker_fixed Fixed bugtracker_cant_reproduce Can't reproduce bugtracker_in_progress In progress bugtracker_answer Waiting for reply bugtracker_no_bug Not a bug Of course you can work with your own values later, but for this tutorial you should use them. In the settings at the bottom of the page you choose Allow filtering and Field Required.
  15. For this database we actually only need 3 fields. The title for the message, the content and the status. How to add custom fields has already been explained in the Documentation database. So let's go directly to the settings ... 1. Title Title = Title Type = Text Template Key: bugtracker_title Leave the rest as it is. 2. Content Titel = Content Type = Editor Template Key: bugtracker_content The other settings are fine too. But you can adjust them a bit, for example by disabling attachments. 3. Status Title = Status Type = Select Box Template Key = bugtracker_status Now it's getting a bit more complicated, so we'll go into more details on the following pages.
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Further information can be found in our Privacy Policy.