Skip to content
Snippets Groups Projects
Commit 87c189ec authored by Florian Gnaegi - frentix GmbH's avatar Florian Gnaegi - frentix GmbH
Browse files

OO-1068 initial draft for new details page

parent dc77d00f
No related branches found
No related tags found
No related merge requests found
Showing
with 201 additions and 91 deletions
......@@ -75,4 +75,9 @@ public interface FormLink extends FormItem{
*/
public void setActive(boolean isActive);
/**
* @param true: link is rendered as a primary link; false: rendered as secondary link
*/
public void setPrimary(boolean isPrimary);
}
\ No newline at end of file
......@@ -264,4 +264,11 @@ public class FormLinkImpl extends FormItemImpl implements FormLink {
component.setActive(isActive);
}
}
@Override
public void setPrimary(boolean isPrimary) {
if (component != null) {
component.setPrimary(isPrimary);
}
}
}
......@@ -207,7 +207,7 @@ cif.initialAuthor=Urheber
cif.lastUsage.na=-
cif.lastusage=Letzter Zugriff
cif.launched=Anzahl Launches
cif.mainLanguage=Haupt Sprache
cif.mainLanguage=Hauptsprache
cif.managedflags=Extern verwaltete Module
cif.objectives=Objectives
cif.ores_id=OpenOLAT-Ressourcen-ID
......@@ -252,11 +252,13 @@ admin.lifecycles.intro=Erstellen und Verwalten Sie Semesterdaten um bei Kurslauf
create.lifecycle=Semester erstellen
managed.resource=Externe Verwaltung
managed.resource.intro=Dieser Kurs wurde von einem externen Werkzeug erstellt. Einige Einstellungen und Module knnen daher in OpenOLAT nicht verndert und benutzt werden. Folgende Elemente sind in OpenOLAT gesperrt:
details.expenditureOfWork.desc=Zeitaufwand
details.expenditureOfWork={0} Stunden pro Woche
details.score=Mit {0} Punkte
details.label.status=Status
details.label.score=Punkte
details.label.recent=Besucht
details.overview=berblick
lifecycle.softkey=Bezeichnung
lifecycle.label=Name
lifecycle.validFrom=$\:cif.date.start
......
......@@ -216,12 +216,12 @@ public class RepositoryEntryDetailsController extends FormBasicController {
// members only always show lock icon
types.add(new PriceMethod("", "o_ac_membersonly_icon"));
if(isMember) {
startLink = uifactory.addFormLink("start", "start", "start", null, layoutCont, Link.LINK);
startLink = uifactory.addFormLink("start", "start", "start", null, layoutCont, Link.BUTTON);
}
} else {
AccessResult acResult = acService.isAccessible(entry, getIdentity(), false);
if(acResult.isAccessible()) {
startLink = uifactory.addFormLink("start", "start", "start", null, layoutCont, Link.LINK);
startLink = uifactory.addFormLink("start", "start", "start", null, layoutCont, Link.BUTTON);
} else if (acResult.getAvailableMethods().size() > 0) {
for(OfferAccess access:acResult.getAvailableMethods()) {
AccessMethod method = access.getMethod();
......@@ -230,11 +230,14 @@ public class RepositoryEntryDetailsController extends FormBasicController {
String price = p == null || p.isEmpty() ? "" : PriceFormat.fullFormat(p);
types.add(new PriceMethod(price, type));
}
startLink = uifactory.addFormLink("start", "start", "book", null, layoutCont, Link.LINK);
startLink = uifactory.addFormLink("start", "start", "book", null, layoutCont, Link.BUTTON);
} else {
startLink = uifactory.addFormLink("start", "start", "start", null, layoutCont, Link.LINK);
startLink = uifactory.addFormLink("start", "start", "start", null, layoutCont, Link.BUTTON);
startLink.setEnabled(false);
}
startLink.setIconRightCSS("o_icon o_icon_start o_icon-lg");
startLink.setPrimary(true);
}
if(!types.isEmpty()) {
......
<div class="f_metadata_details b_clearfix">
<div class="b_c38r">
<p>$r.render("mark")</p>
#if($r.available("thumbnail"))
<div class="f_metadata_media">
<div class="o_repo_details">
<div class="jumbotron">
#if($r.available("thumbnail"))
<div class="o_media">
$r.render("thumbnail")
</div>
#end
<h1>
<i class="o_icon $cssClass o_icon-lg"></i>
$r.escapeHtml($v.displayname)
</h1>
<div class="o_desc">
$description
</div>
</div>
<div class="row">
<div class="col-xs-12 col-sm-5 col-md-4 pull-right"><div class="row">
<div class="col-xs-6 col-sm-12">
<div class="o_overview">
<h4>$r.translate("details.overview")</h4>
#if($v.lifecycle || $v.lifecycle.softKey || $row.lifecycle.start || $row.lifecycle.end)
<div title="$r.translateInAttribute("cif.dates")">
<i class="o_icon o_icon_lifecycle"></i>
#if($!v.lifecycle.private && $v.lifecycle.softKey) $v.lifecycle.softKey #end
#if($v.lifecycle.validFrom) $r.formatDate($v.lifecycle.validFrom) #end
#if($v.lifecycle.validTo) - $r.formatDate($v.lifecycle.validTo) #end
</div>
#end
#if($v.expenditureOfWork)
<div title="$r.translateInAttribute("details.expenditureOfWork.desc")">
<i class="o_icon o_icon_expenditure"></i>
$r.translate("details.expenditureOfWork", $r.escapeHtml($v.expenditureOfWork))
</div>
#end
#if($v.mainLanguage)
<div title="$r.translateInAttribute("cif.mainLanguage")">
<i class="o_icon o_icon_language"></i>
$r.escapeHtml($v.mainLanguage)
</div>
#end
</div>
#end
#if($v.lifecycle || $v.lifecycle.softKey || $row.lifecycle.start || $row.lifecycle.end)
<h5>$r.translate("cif.dates")</h5>
<div class="f_metadata_lifecycle">
#if($!v.lifecycle.private && $v.lifecycle.softKey) $v.lifecycle.softKey #end
#if($v.lifecycle.validFrom) $r.formatDateAndTime($v.lifecycle.validFrom) #end
#if($v.lifecycle.validTo) - $r.formatDateAndTime($v.lifecycle.validTo) #end
<div class=".o_social">
<h4>$r.translate("ratings")</h4>
$r.render("rating")
$r.render("comments")
</div>
#end
#if($v.expenditureOfWork)
<div class="f_metadata_expenditure">
$r.translate("details.expenditureOfWork", $r.escapeHtml($v.expenditureOfWork))
#if($v.authors)
<div class="o_authors">
<h4>$r.translate("cif.authors")</h4>
$r.escapeHtml($v.authors)
</div>
#end
#if($v.mainLanguage)
<h5>$r.translate("cif.mainLanguage")</h5>
<p>$r.escapeHtml($v.mainLanguage)</p>
#end
#if($ac)
#foreach($ac_type in $ac)
#if($ac_type.price && $ac_type.price.length() > 0)
<span class='b_float_right b_with_small_icon_left $ac_type.type'>$ac_type.price</span>
#else
<span class='b_float_right b_small_icon $ac_type.type'></span>
#end
<div class="o_start">
$r.render("start")
</div>
</div>
<div class="col-xs-6 col-sm-12">
#if($passed || $failed || $score)
<div class="f_metadata_score">
#if($passed)
$r.translate("passed.true")
#elseif($failed)
$r.translate("passed.false")
#end
#if($score) <span>$r.translate("details.score", $score)</span> #end
</div>
#end
#end
<div class="f_metadata_go">
$r.render("start")
#if($recentLaunch)
<p>$r.translate("cif.lastusage"): $r.formatDateAndTime($recentLaunch)</p>
#end
#if($categories && $categories.size() > 0)
<h5>$r.translate("cif.categories")</h5>
<ul>
#foreach($category in $categories)
<li>$r.render($category)</li>
#end
</ul>
#end
#if($groups && $groups.size() > 0)
<h5>$r.translate("cif.groups")</h5>
<ul>
#foreach($group in $groups)
<li>$r.render($group)</li>
#end
</ul>
#end
</div>
</div>
</div>
#if($passed || $failed || $score)
<div class="f_metadata_score">
#if($passed)
$r.translate("passed.true")
#elseif($failed)
$r.translate("passed.false")
#end
#if($score) <span>$r.translate("details.score", $score)</span> #end
</div>
#end
#if($recentLaunch)
<p>$r.translate("cif.lastusage"): $r.formatDateAndTime($recentLaunch)</p>
#end
#if($categories && $categories.size() > 0)
<h5>$r.translate("cif.categories")</h5>
<ul>
#foreach($category in $categories)
<li>$r.render($category)</li>
<div class="col-xs-12 col-sm-7 col-md-8 pull-left">
#if($objectives)
<div class="o_objectives">
<h3>$r.translate("cif.objectives")</h3>
$objectives
</div>
#end
</div>
<div class="col-xs-12 col-sm-7 col-md-8">
#if($requirements)
<div class="o_requirements">
<h3>$r.translate("cif.requirements")</h3>
$requirements
</div>
#end
</ul>
#end
#if($groups && $groups.size() > 0)
<h5>$r.translate("cif.groups")</h5>
<ul>
#foreach($group in $groups)
<li>$r.render($group)</li>
#if($credits)
<div class="o_credits">
<h3>$r.translate("cif.credits")</h3>
$credits
</div>
#end
</ul>
#end
$r.render("rating")
$r.render("comments")
</div>
</div>
<div class="b_c60r">
<h4 class="b_with_small_icon_left $cssClass">$r.escapeHtml($v.displayname)</h4>
#if($v.authors)
<h5>$r.translate("cif.authors")</h5>
<p>$r.escapeHtml($v.authors)</p>
#end
<div class="b_clearfix">$description</div>
#if($objectives)
<h5>$r.translate("cif.objectives")</h5>
<div class="b_clearfix">$objectives</div>
#end
#if($requirements)
<h5>$r.translate("cif.requirements")</h5>
<div class="b_clearfix">$requirements</div>
#end
#if($credits)
<h5>$r.translate("cif.credits")</h5>
<div class="b_clearfix">$credits</div>
<p>$r.render("mark")</p>
#if($ac)
#foreach($ac_type in $ac)
#if($ac_type.price && $ac_type.price.length() > 0)
<span class='b_float_right b_with_small_icon_left $ac_type.type'>$ac_type.price</span>
#else
<span class='b_float_right b_small_icon $ac_type.type'></span>
#end
#end
#end
</div>
</div>
......
......@@ -37,6 +37,7 @@
/* sites specific styles */
@import "modules/coursesite";
@import "modules/repository";
@import "modules/course";
@import "modules/devel";
......
......@@ -149,7 +149,7 @@ $o-coursesite-catalog-border : $brand-primary;
@media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) {
height: $o-coursesite-rowelem-height-sm;
width: $o-coursesite-rowelem-width-sm;
.o_score, .o_comments {
.o_score, .o_comments, .o_label {
display: none;
}
......
......@@ -28,6 +28,7 @@ $fa-css-prefix: "o_icon" !default;
.o_icon_edit_file { @extend .o_icon-edit;}
.o_icon_edit_metadata { @extend .o_icon-edit; color: #996633;}
.o_icon_error {@extend .o_icon-exclamation;}
.o_icon_expenditure {@extend .o_icon-clock-o;}
.o_icon_failed {@extend .o_icon-times-circle;}
.o_icon_filter {@extend .o_icon-filter;}
.o_icon_help { @extend .o_icon-question-circle; @extend .o_icon-lg; cursor: help;}
......@@ -37,8 +38,9 @@ $fa-css-prefix: "o_icon" !default;
.o_icon_move_right { @extend .o_icon-angle-double-right;}
.o_icon_new_document { @extend .o_icon-fighter-jet; color:pink;}
.o_icon_new_folder { @extend .o_icon-fighter-jet; color:violet;}
.o_icon_language {@extend .o_icon-globe; }
.o_icon_list {@extend .o_icon-list; }
.o_icon_lifecycle {@extend .o_icon-clock-o;}
.o_icon_lifecycle {@extend .o_icon-calendar;}
.o_icon_login {@extend .o_icon-sign-in;}
.o_icon_logout {@extend .o_icon-sign-out;}
.o_icon_mandatory {@extend .o_icon-asterisk; color: #f0ad4e;}
......@@ -75,6 +77,10 @@ a.o_icon {
@extend .o_undecorated;
}
/* repository type icons */
.o_CourseModule_icon { @extend .o_icon-book; }
/* Access control icons */
.o_ac_token_icon { @extend .o_icon-key;}
.o_ac_free_icon { @extend .o_icon-gift;}
......
.o_repo_details {
.jumbotron {
h1 i {
display: none;
}
.o_media {
@extend .pull-right;
margin-top: 20px;
margin-left: 2em;
margin-bottom: 2em;
}
}
.o_overview {
i {
margin-right: 0.5em;
}
div {
margin-bottom: 0.25em;
}
}
.o_start {
margin: 2em 0;
a {
display: block;
}
}
@media (max-width: $screen-xs-max) {
.jumbotron {
p {
font-size: floor($jumbotron-font-size * 0.75);
}
.o_media {
margin-top: 0;
}
}
}
}
\ No newline at end of file
source diff could not be displayed: it is too large. Options to address this: view the blob.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment