bool PortalsDirectory::handle(shared_ptr<HttpSession> session, const HttpPath &path) { // Controlla se non stata specificata alcuna pagina if(path.getTokens().size() == 0) { // Redirige il client alla pagina predefinita session->redirect(PortalsSystem::instance()->getMainLink(OS_IDE_PAGE_OSIRIS)); return true; } else { ide::portal::PortalPage page_type = PortalsSystem::instance()->getPortalPage(path.getDirectory()); // Controlla se la pagina non una pagina standard if(page_type != ide::portal::ppUnknown) { shared_ptr<IPage> page; switch(page_type) { case ide::portal::ppAccount: page.reset(OS_NEW ide::portal::Account(session)); break; case ide::portal::ppEdit: page.reset(OS_NEW ide::portal::Edit(session)); break; case ide::portal::ppUser: page.reset(OS_NEW ide::portal::User(session)); break; case ide::portal::ppUsers: page.reset(OS_NEW ide::portal::Users(session)); break; case ide::portal::ppView: page.reset(OS_NEW ide::portal::View(session)); break; case ide::portal::ppObjectDetail: page.reset(OS_NEW ide::portal::ObjectDetail(session)); break; case ide::portal::ppAssistant: page.reset(OS_NEW ide::portal::Assistant(session)); break; case ide::portal::ppSearch: page.reset(OS_NEW ide::portal::Search(session)); break; case ide::portal::ppMessenger: page.reset(OS_NEW ide::portal::Messenger(session)); break; default: OS_ASSERTFALSE(); break; } return page != nullptr ? page->transmit() : false; } } if(DirectoryBase::handle(session, path)) return true; return false; }
bool IHttpDirectory::process(shared_ptr<HttpSession> session, const HttpPath &path) { if(isActive() == false) return false; if(isAccessible(session) == false) return false; if(handle(session, path)) return true; shared_ptr<IHttpDirectory> directory = getDirectory(path.getDirectory()); if(directory != nullptr && directory->process(session, path.getTarget())) return true; return false; }