コード例 #1
0
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;
}
コード例 #2
0
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;
}