use of org.olat.modules.portfolio.Page in project OpenOLAT by OpenOLAT.
the class PageDAOTest method getLastPage.
@Test
public void getLastPage() {
// an owned binder
Identity author = JunitTestHelper.createAndPersistIdentityAsRndUser("pf-1");
Binder binder = portfolioService.createNewBinder("Binder p2", "A binder with 2 page", null, author);
Section section = binderDao.createSection("Section", "First section", null, null, binder);
dbInstance.commitAndCloseSession();
Section reloadedSection = binderDao.loadSectionByKey(section.getKey());
Page page1 = pageDao.createAndPersist("Page 1", "A page with content.", null, null, true, reloadedSection, null);
sleep(1500);
Page page2 = pageDao.createAndPersist("Page 2", "A page with content.", null, null, true, reloadedSection, null);
sleep(1500);
Page page3 = portfolioService.appendNewPage(author, "Page 3", "A page with content.", null, null, null);
dbInstance.commitAndCloseSession();
Assert.assertNotNull(page1);
// reload
Page lastBinderPage = pageDao.getLastPage(author, true);
Assert.assertNotNull(lastBinderPage);
Assert.assertEquals(page2, lastBinderPage);
// reload
Page lastFloatingPage = pageDao.getLastPage(author, false);
Assert.assertNotNull(lastFloatingPage);
Assert.assertEquals(page3, lastFloatingPage);
}
use of org.olat.modules.portfolio.Page in project OpenOLAT by OpenOLAT.
the class PageDAOTest method getPages_binder.
@Test
public void getPages_binder() {
BinderImpl binder = binderDao.createAndPersist("Binder p2", "A binder with 2 page", null, null);
Section section = binderDao.createSection("Section", "First section", null, null, binder);
dbInstance.commitAndCloseSession();
Section reloadedSection = binderDao.loadSectionByKey(section.getKey());
Page page1 = pageDao.createAndPersist("Page 1", "A page with content.", null, null, true, reloadedSection, null);
Page page2 = pageDao.createAndPersist("Page 2", "A page with content.", null, null, true, reloadedSection, null);
Page page3 = pageDao.createAndPersist("Juno", "Juno is a spacecraft.", null, null, true, reloadedSection, null);
dbInstance.commitAndCloseSession();
// reload
List<Page> sectionPages = pageDao.getPages(binder, null);
Assert.assertNotNull(sectionPages);
Assert.assertEquals(3, sectionPages.size());
Assert.assertTrue(sectionPages.contains(page1));
Assert.assertTrue(sectionPages.contains(page2));
Assert.assertTrue(sectionPages.contains(page3));
// reload
List<Page> searchedPages = pageDao.getPages(binder, "juno");
Assert.assertNotNull(searchedPages);
Assert.assertEquals(1, searchedPages.size());
Assert.assertFalse(searchedPages.contains(page1));
Assert.assertFalse(searchedPages.contains(page2));
Assert.assertTrue(searchedPages.contains(page3));
}
use of org.olat.modules.portfolio.Page in project OpenOLAT by OpenOLAT.
the class PageDAOTest method getOwnedPages.
@Test
public void getOwnedPages() {
// an owned binder
Identity author = JunitTestHelper.createAndPersistIdentityAsRndUser("pf-1");
Binder binder = portfolioService.createNewBinder("Binder p2", "A binder with 2 page", null, author);
Section section = binderDao.createSection("Section", "First section", null, null, binder);
dbInstance.commitAndCloseSession();
Section reloadedSection = binderDao.loadSectionByKey(section.getKey());
Page page1 = pageDao.createAndPersist("Page 1", "A page with content.", null, null, true, reloadedSection, null);
Page page2 = pageDao.createAndPersist("Page 2", "A page with content.", null, null, true, reloadedSection, null);
Page page3 = pageDao.createAndPersist("Anime", "Princess Mononoke is the second most famous anime of Miazaki.", null, null, true, reloadedSection, null);
dbInstance.commitAndCloseSession();
// a not owned binder
BinderImpl binderAlt = binderDao.createAndPersist("Not my binder", "A binder that I don't own", null, null);
Section sectionAlt = binderDao.createSection("Section", "First section", null, null, binderAlt);
dbInstance.commitAndCloseSession();
Section reloadedSectionAlt = binderDao.loadSectionByKey(sectionAlt.getKey());
Page pageAlt = pageDao.createAndPersist("Page alt", "A page with alternative content.", null, null, true, reloadedSectionAlt, null);
dbInstance.commitAndCloseSession();
// reload
List<Page> sectionPages = pageDao.getOwnedPages(author, null);
Assert.assertNotNull(sectionPages);
Assert.assertEquals(3, sectionPages.size());
Assert.assertTrue(sectionPages.contains(page1));
Assert.assertTrue(sectionPages.contains(page2));
Assert.assertTrue(sectionPages.contains(page3));
Assert.assertFalse(sectionPages.contains(pageAlt));
// reload
List<Page> searchedPages = pageDao.getOwnedPages(author, "Miazaki");
Assert.assertNotNull(searchedPages);
Assert.assertEquals(1, searchedPages.size());
Assert.assertFalse(searchedPages.contains(page1));
Assert.assertFalse(searchedPages.contains(page2));
Assert.assertTrue(searchedPages.contains(page3));
Assert.assertFalse(sectionPages.contains(pageAlt));
}
use of org.olat.modules.portfolio.Page in project OpenOLAT by OpenOLAT.
the class InvitationEditRightsController method initForm.
@Override
protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
formLayout.setElementCssClass("o_sel_pf_invitation_form");
FormLayoutContainer inviteeCont = FormLayoutContainer.createDefaultFormLayout("inviteeInfos", getTranslator());
inviteeCont.setRootForm(mainForm);
formLayout.add("inviteeInfos", inviteeCont);
firstNameEl = uifactory.addTextElement("firstName", "firstName", 64, invitation.getFirstName(), inviteeCont);
firstNameEl.setElementCssClass("o_sel_pf_invitation_firstname");
firstNameEl.setMandatory(true);
lastNameEl = uifactory.addTextElement("lastName", "lastName", 64, invitation.getLastName(), inviteeCont);
lastNameEl.setElementCssClass("o_sel_pf_invitation_lastname");
lastNameEl.setMandatory(true);
String invitationEmail = email != null ? email : invitation.getMail();
mailEl = uifactory.addTextElement("mail", "mail", 128, invitationEmail, inviteeCont);
mailEl.setElementCssClass("o_sel_pf_invitation_mail");
mailEl.setMandatory(true);
mailEl.setNotEmptyCheck("map.share.empty.warn");
mailEl.setEnabled(invitation.getKey() == null);
if (StringHelper.containsNonWhitespace(invitation.getMail()) && MailHelper.isValidEmailAddress(invitation.getMail())) {
SecurityGroup allUsers = securityManager.findSecurityGroupByName(Constants.GROUP_OLATUSERS);
List<Identity> shareWithIdentities = userManager.findIdentitiesByEmail(Collections.singletonList(invitation.getMail()));
if (isAtLeastOneInSecurityGroup(shareWithIdentities, allUsers)) {
mailEl.setErrorKey("map.share.with.mail.error.olatUser", new String[] { invitation.getMail() });
}
}
String link = getInvitationLink();
StaticTextElement linkEl = uifactory.addStaticTextElement("invitation.link", link, inviteeCont);
linkEl.setElementCssClass("o_sel_pf_invitation_url");
linkEl.setLabel("invitation.link", null);
if (mailTemplate != null) {
subjectEl = uifactory.addTextElement("subjectElem", "mail.subject", 128, mailTemplate.getSubjectTemplate(), inviteeCont);
subjectEl.setDisplaySize(60);
subjectEl.setMandatory(true);
bodyEl = uifactory.addTextAreaElement("bodyElem", "mail.body", -1, 15, 60, true, mailTemplate.getBodyTemplate(), inviteeCont);
bodyEl.setHelpUrlForManualPage("E-Mail");
bodyEl.setMandatory(true);
}
// binder
MultipleSelectionElement accessEl = uifactory.addCheckboxesHorizontal("access-" + (counter++), null, formLayout, theKeys, theValues);
accessEl.addActionListener(FormEvent.ONCHANGE);
binderRow = new BinderAccessRightsRow(accessEl, binder);
// sections
List<Section> sections = portfolioService.getSections(binder);
Map<Long, SectionAccessRightsRow> sectionMap = new HashMap<>();
for (Section section : sections) {
MultipleSelectionElement sectionAccessEl = uifactory.addCheckboxesHorizontal("access-" + (counter++), null, formLayout, theKeys, theValues);
sectionAccessEl.addActionListener(FormEvent.ONCHANGE);
SectionAccessRightsRow sectionRow = new SectionAccessRightsRow(sectionAccessEl, section, binderRow);
binderRow.getSections().add(sectionRow);
sectionMap.put(section.getKey(), sectionRow);
}
// pages
List<Page> pages = portfolioService.getPages(binder, null);
for (Page page : pages) {
Section section = page.getSection();
SectionAccessRightsRow sectionRow = sectionMap.get(section.getKey());
MultipleSelectionElement pageAccessEl = uifactory.addCheckboxesHorizontal("access-" + (counter++), null, formLayout, theKeys, theValues);
pageAccessEl.addActionListener(FormEvent.ONCHANGE);
PortfolioElementAccessRightsRow pageRow = new PortfolioElementAccessRightsRow(pageAccessEl, page, sectionRow);
sectionRow.getPages().add(pageRow);
}
if (formLayout instanceof FormLayoutContainer) {
FormLayoutContainer layoutCont = (FormLayoutContainer) formLayout;
layoutCont.contextPut("binderRow", binderRow);
}
selectAll = uifactory.addFormLink("form.checkall", "form.checkall", null, formLayout, Link.LINK);
selectAll.setIconLeftCSS("o_icon o_icon-sm o_icon_check_on");
deselectAll = uifactory.addFormLink("form.uncheckall", "form.uncheckall", null, formLayout, Link.LINK);
deselectAll.setIconLeftCSS("o_icon o_icon-sm o_icon_check_off");
FormLayoutContainer buttonsCont = FormLayoutContainer.createButtonLayout("buttons", getTranslator());
formLayout.add(buttonsCont);
buttonsCont.setRootForm(mainForm);
uifactory.addFormCancelButton("cancel", buttonsCont, ureq, getWindowControl());
if (invitation.getKey() != null) {
removeLink = uifactory.addFormLink("remove", buttonsCont, Link.BUTTON);
}
uifactory.addFormSubmitButton("save", buttonsCont);
}
use of org.olat.modules.portfolio.Page in project OpenOLAT by OpenOLAT.
the class ExportBinderAsCPResource method prepare.
@Override
public void prepare(HttpServletResponse hres) {
try {
hres.setCharacterEncoding("UTF-8");
} catch (Exception e) {
log.error("", e);
}
try (ZipOutputStream zout = new ZipOutputStream(hres.getOutputStream())) {
Binder binder = portfolioService.getBinderByKey(binderRef.getKey());
String label = binder.getTitle();
String secureLabel = StringHelper.transformDisplayNameToFileSystemName(label);
String file = secureLabel + ".zip";
hres.setHeader("Content-Disposition", "attachment; filename*=UTF-8''" + StringHelper.urlEncodeUTF8(file));
hres.setHeader("Content-Description", StringHelper.urlEncodeUTF8(label));
// load pages
List<Section> sections = portfolioService.getSections(binder);
List<Page> pages = portfolioService.getPages(binder, null);
// manifest
ManifestType manifest = createImsManifest(binder, sections, pages);
zout.putNextEntry(new ZipEntry("imsmanifest.xml"));
write(manifest, new ShieldOutputStream(zout));
zout.closeEntry();
// write pages
for (Section section : sections) {
exportSection(section, zout);
}
// write pages
for (Page page : pages) {
exportPage(page, zout);
}
// theme and javascripts
exportCSSAndJs(zout);
// make it readable offline
ByteArrayOutputStream manifestOut = new ByteArrayOutputStream();
write(manifest, manifestOut);
String manifestXml = new String(manifestOut.toByteArray());
String indexSrc = sectionFilename(sections.get(0));
CPOfflineReadableManager.getInstance().makeCPOfflineReadable(manifestXml, indexSrc, zout);
} catch (Exception e) {
log.error("", e);
}
}
Aggregations