Пример #1
0
void ExtensionsInvalidModule::onLoad()
{
	ViewerBase::onLoad();

	/*
	shared_ptr<HtmlImage> img(OS_NEW HtmlImage(getPage()->getSkin()->getImageUrl(_S("invalid_module.png"))));
	setCss(_S("os_modules_invalid"));
	img->getAttributes()->set(_S("data-os-tooltip"), getPage()->getText(_S("system.invalid_module")) + _S(": ") + m_module.toUTF16());
	getControls()->add(img);
	*/	
	setCss(_S("os_modules_invalid"));
	getControls()->add(shared_ptr<HtmlText>(OS_NEW HtmlText(getPage()->getText(_S("system.invalid_module")))));
}
Пример #2
0
void Subscribe::onLoad()
{
	PageBase::onLoad();

	// Opzioni driver

	m_driver = DatabasesSystem::instance()->getDriver(m_databaseDriver->getValue().to_ascii());
	if(m_driver != nullptr)
	{
		m_driverOptions = m_driver->createOptions();
		if(m_driverOptions != nullptr)
		{
			const ordered_map<String, String> &driverParams = m_driverOptions->getParams();
			for(ordered_map<String, String>::const_iterator i = driverParams.begin(); i != driverParams.end(); ++i)
			{
				shared_ptr<HtmlTableRow> rowOption = m_table->addRow();

				shared_ptr<HtmlTableCell> optionLeft = rowOption->addCell();
				optionLeft->setCss(_S("os_label"));
				optionLeft->getControls()->add(shared_ptr<HtmlText>(OS_NEW HtmlText(i->first)));

				shared_ptr<HtmlTableCell> optionRight = rowOption->addCell();
				optionRight->setCss(_S("os_value"));

				shared_ptr<HtmlTextBox> optionControl = getDriverOptionControl(m_driver->getName(), i->first);
				optionControl->setValue(i->second);
				optionRight->getControls()->add(optionControl);
			}
		}
	}

	// Comandi

	shared_ptr<HtmlTableCell> cellCommands = m_table->addRow()->addCell();
	cellCommands->setCss(_S("os_commands"));
	cellCommands->setColSpan(2);

	shared_ptr<IdeButton> cmdSubscribe(OS_NEW IdeButton(getText("main.pages.subscribe.action.subscribe")));
	cmdSubscribe->setID("subscribe");
	cmdSubscribe->setIsDefault(true);
	cmdSubscribe->getEventClick()->connect(boost::bind(&Subscribe::onSubscribe, this));
	cellCommands->getControls()->add(cmdSubscribe);

	shared_ptr<IdeButton> cmdCancel(OS_NEW IdeButton(getText("main.pages.subscribe.action.cancel")));
	cmdCancel->setID("cancel");
	cmdCancel->setIsDefault(false);
	cmdCancel->getEventClick()->connect(boost::bind(&Subscribe::onCancel, this));
	cellCommands->getControls()->add(cmdCancel);
}
Пример #3
0
void FeedViewer::onLoad()
{
	ViewerBase::onLoad();

	shared_ptr<XMLNode> root = getModuleDocument()->getRoot();
	OS_ASSERT(root != nullptr);

	// Ajax:
	// - Creo un controllo per contenere quanto sotto
	// - Chiamo un "isDirect" a livello di ModuleViewer, che restituisce un "true" se son puntato diretto.
	// - Se si, leggo il parametro "mode", se è "direct" restituisco il contenuto del controllo secco via transmit-buffer
	// - Qui dumpo una chiamata ad ajax passandogli l'url di me in direct mode
	String mode = _S("direct");  // Proprietà?
	mode = _S("ajax");
	
	shared_ptr<HtmlDiv> divData(OS_NEW HtmlDiv());

	String controlID = getInstance().toUTF16();
	if(controlID.empty())
	{
		controlID = _S("preview"); // Se il modulo è in preview, non ha un'ID di istanza. Ma un ID mi serve x forza per gli eventi.
		mode = _S("direct"); // Ajax non è supportato nell'anteprima, perchè non ho un id da referenziare secco per avere il contenuto in un secondo momento.
	}
	setID(controlID);

	if(mode == _S("ajax"))
	{
		// - Chiamo un "isDirect" a livello di ModuleViewer, che restituisce un "true" se son puntato diretto.
		// - Se si, leggo il parametro "mode", se è "direct" restituisco il contenuto del controllo secco via transmit-buffer
		if(getPage()->getRequest()->getUrlParam(_W("mode")) == _W("content"))
			mode = _S("content");
		else
			mode = _S("delayed");
	}

	if( (mode == _S("direct")) || (mode == _S("content")) )
	{	
		String url = root->getAttributeString(OS_MODULES_FEED_URL);
		bool showTitle = root->getAttributeBool(OS_MODULES_FEED_SHOWTITLE);
		bool showDescription = root->getAttributeBool(OS_MODULES_FEED_SHOWDESCRIPTION);
		bool showImage = root->getAttributeBool(OS_MODULES_FEED_SHOWIMAGE);
		int32 nItems = root->getAttributeInt32(OS_MODULES_FEED_NITEMS);
		String showItemDescription = root->getAttributeString(OS_MODULES_FEED_SHOWITEMDESCRIPTION);
		String templateModel = root->getAttributeString(OS_MODULES_FEED_TEMPLATEMODEL);
		String templateCustom = root->getAttributeString(OS_MODULES_FEED_TEMPLATECUSTOM);

		shared_ptr<XMLDocument> document(OS_NEW XMLDocument());
		shared_ptr<XMLStylesheet> transformer(OS_NEW XMLStylesheet());

		try
		{
			shared_ptr<boost::asio::io_service> service = getSession()->getService();

			String output;
			String error;

			String userAgent = Engine::getDefaultHttpUserAgent();	
			document->parseUrl(url.to_ascii(), userAgent, service, Engine::instance()->createTCPSocket(service, true, true));

			shared_ptr<XMLNode> rssRoot = document->getRoot();

			if(rssRoot == nullptr)
			{
				// Error reading RSS Feed.				
				error = _S("Feed reading error.");				
			}
			else
			{		
				// Aggiungo all'xml RSS le proprietà del modulo.
				rssRoot->setAttributeString(OS_MODULES_FEED_URL, url);
				rssRoot->setAttributeBool(OS_MODULES_FEED_SHOWTITLE, showTitle);
				rssRoot->setAttributeBool(OS_MODULES_FEED_SHOWDESCRIPTION, showDescription);
				rssRoot->setAttributeBool(OS_MODULES_FEED_SHOWIMAGE, showImage);
				rssRoot->setAttributeInt32(OS_MODULES_FEED_NITEMS, nItems);
				rssRoot->setAttributeString(OS_MODULES_FEED_SHOWITEMDESCRIPTION, showItemDescription);
				rssRoot->setAttributeString(OS_MODULES_FEED_TEMPLATEMODEL, templateModel);
				
				if(templateModel.empty())
				{
					shared_ptr<XMLStylesheet> stylesheet(OS_NEW XMLStylesheet());
					if(stylesheet->parseString(templateCustom))
					{
						// Inizializza le funzioni del template
						getPage()->initStylesheet(stylesheet);

						if(stylesheet->applyToString(document, output))
						{
							//getControls()->add(shared_ptr<HtmlLiteral>(OS_NEW HtmlLiteral(getPage()->parseBBCode(output, true, false, false, false))));
						}
						else
						{
							// Transformazione fallita.
							error = _S("Transformation failed.");
						}
					}
					else
					{
						// Template custom invalido.
						error = _S("Invalid custom template.");
					}
				}
				else
				{
					shared_ptr<XMLStylesheet> stylesheet(OS_NEW XMLStylesheet());
					// Inizializza le funzioni del template
					getPage()->initStylesheet(stylesheet);

					String path = utils::makeFilePath(utils::makeFolderPath(g_componentsPath, _S("feed")), _S("feed_viewer_") + templateModel + _S(".xsl"));

					// Carica l'xsl
					if(stylesheet->parseFile(path))
					{
						if(stylesheet->applyToString(document, output))
						{
							// Qui potrei aggiungere un literal diretto, non parserizzato bb...
							//getControls()->add(shared_ptr<HtmlLiteral>(OS_NEW HtmlLiteral(getPage()->parseBBCode(output, true, false, false, false))));
						}
						else
						{
							// Transformazione fallita.
							error = _S("Transformation failed.");
						}
					}
					else
					{
						// Template non valido.
						error = _S("Invalid template.");
					}
				}

				if(output.empty() == true)
				{
					error = _S("Unknown error.");										
				}
			}

			if(error.empty() == false)
			{
				divData->setCss(_S("os_plugins_components_feed_error_reading"));
				divData->getControls()->add(shared_ptr<HtmlText>(OS_NEW HtmlText(error)));
			}
			else
			{
				divData->setCss(_S("os_plugins_components_feed_ok"));
				output = output.trim();
				//output = _S("[nobr]") + output + _S("[/nobr]");

				// Debugging
				//output = _S("[code]") + output + _S("[/code]") + output;
				
				divData->getControls()->add(shared_ptr<HtmlLiteral>(OS_NEW HtmlLiteral(getPage()->parseOml(output, true, false, false, omlRenderModeOsiris, getInstance().getString()))));
			}
		}
		catch(std::exception &e)
		{
			OS_LOG_ERROR(e.what());
		}	
	}

	if(mode == _S("direct"))
	{
		getControls()->add(divData);		
	}
	else if(mode == _S("delayed"))
	{
		String urlAjaxContent = getPage()->getPortal()->getViewObjectLink(getInstance()) + _S("&mode=content");
		divData->getControls()->add(shared_ptr<HtmlLiteral>(OS_NEW HtmlLiteral(_S("<div data-os-wait=\"center\" data-os-url=\"") + urlAjaxContent + _S("\"></div>"))));		
		getControls()->add(divData);		
	}
	else if(mode == _S("content"))
	{
		// trasmitbuffer solo di divData.
		HtmlWriter writer;
		divData->render(getPage(), writer);		
		
		getPage()->getSession()->transmitHtml(writer.getHtml().to_utf8(), httpStatusOK);
	}
}
Пример #4
0
void Subscribe::onInit()
{
	PageBase::onInit();

	const list<shared_ptr<IDbDriver> >::type &drivers = DatabasesSystem::instance()->getDrivers();
	for(list<shared_ptr<IDbDriver> >::type::const_iterator i = drivers.begin(); i != drivers.end(); ++i)
	{
		shared_ptr<IDbDriver> driver = *i;
		m_databaseDriver->addOption(driver->getDescription(), driver->getName());
	}

	shared_ptr<IdeBlock> block(OS_NEW IdeBlock(getText(_S("main.pages.subscribe.title"))));
	getArea(pageAreaContent)->getControls()->add(block);

	block->getBody()->getControls()->add(shared_ptr<IdeHelpBox>(OS_NEW IdeHelpBox(getText(_S("main.pages.subscribe.help")), _S("59FCAB72193EB4E02AF5CFD2D45811ACCB765879"))));

	block->getBody()->getControls()->add(m_table);

	// Header opzioni portale

	shared_ptr<HtmlTableHeader> portalHeader = m_table->addRow()->addHeader();
	portalHeader->setCss(_S("os_subtitle"));
	portalHeader->setColSpan(2);
	portalHeader->getControls()->add(shared_ptr<HtmlText>(OS_NEW HtmlText(getText("main.pages.subscribe.subtitle"))));

	// Link del portale

	m_rowPortalLink = m_table->addRow();

	shared_ptr<HtmlTableCell> portalLinkLeft = m_rowPortalLink->addCell();
	portalLinkLeft->setCss(_S("os_label"));
	portalLinkLeft->getControls()->add(shared_ptr<HtmlText>(OS_NEW HtmlText(getText("main.pages.subscribe.portalLink"))));
	portalLinkLeft->getControls()->add(shared_ptr<HtmlText>(OS_NEW HtmlText(":")));

	shared_ptr<HtmlTableCell> portalLinkRight = m_rowPortalLink->addCell();
	portalLinkRight->setCss(_S("os_value"));
	portalLinkRight->getControls()->add(m_portalLink);

	// Checkbox di visualizzazione dei parametri

	shared_ptr<HtmlTableRow> rowShowParams = m_table->addRow();

	shared_ptr<HtmlTableCell> colShowParamsLeft = rowShowParams->addCell();
	colShowParamsLeft->setCss(_S("os_label"));
	colShowParamsLeft->getControls()->add(shared_ptr<HtmlText>(OS_NEW HtmlText(getText("main.pages.subscribe.showParams"))));
	colShowParamsLeft->getControls()->add(shared_ptr<HtmlText>(OS_NEW HtmlText(":")));

	shared_ptr<HtmlTableCell> colShowParamsRight = rowShowParams->addCell();
	colShowParamsRight->setCss(_S("os_value"));
	colShowParamsRight->getControls()->add(m_showPortalParams);

	// Nome del portale

	m_rowName = m_table->addRow();

	shared_ptr<HtmlTableCell> nameLeft = m_rowName->addCell();
	nameLeft->setCss(_S("os_label"));
	nameLeft->getControls()->add(shared_ptr<HtmlText>(OS_NEW HtmlText(getText("main.pages.subscribe.name"))));
	nameLeft->getControls()->add(shared_ptr<HtmlText>(OS_NEW HtmlText(":")));

	shared_ptr<HtmlTableCell> nameRight = m_rowName->addCell();
	nameRight->setCss(_S("os_value"));
	nameRight->getControls()->add(m_portalName);

	// ID del portale

	m_rowID = m_table->addRow();

	shared_ptr<HtmlTableCell> idLeft = m_rowID->addCell();
	idLeft->setCss(_S("os_label"));
	idLeft->getControls()->add(shared_ptr<HtmlText>(OS_NEW HtmlText(getText("main.pages.subscribe.id"))));
	idLeft->getControls()->add(shared_ptr<HtmlText>(OS_NEW HtmlText(":")));

	shared_ptr<HtmlTableCell> idRight = m_rowID->addCell();
	idRight->setCss(_S("os_value"));
	idRight->getControls()->add(m_portalID);

	// Utente del portale

	m_rowUser = m_table->addRow();

	shared_ptr<HtmlTableCell> userLeft = m_rowUser->addCell();
	userLeft->setCss(_S("os_label"));
	userLeft->getControls()->add(shared_ptr<HtmlText>(OS_NEW HtmlText(getText("main.pages.subscribe.user"))));
	userLeft->getControls()->add(shared_ptr<HtmlText>(OS_NEW HtmlText(":")));

	shared_ptr<HtmlTableCell> userRight = m_rowUser->addCell();
	userRight->setCss(_S("os_value"));
	userRight->getControls()->add(m_portalPov);

	// Password del portale

	shared_ptr<HtmlTableRow> rowPassword = m_table->addRow();

	shared_ptr<HtmlTableCell> passwordLeft = rowPassword->addCell();
	passwordLeft->setCss(_S("os_label"));
	passwordLeft->getControls()->add(shared_ptr<HtmlText>(OS_NEW HtmlText(getText("main.pages.subscribe.password"))));
	passwordLeft->getControls()->add(shared_ptr<HtmlText>(OS_NEW HtmlText(":")));

	shared_ptr<HtmlTableCell> passwordRight = rowPassword->addCell();
	passwordRight->setCss(_S("os_value"));
	passwordRight->getControls()->add(m_portalPassword);

	// Header opzioni database

	shared_ptr<HtmlTableHeader> databaseHeader = m_table->addRow()->addHeader();
	databaseHeader->setCss(_S("os_subtitle"));
	databaseHeader->setColSpan(2);
	databaseHeader->getControls()->add(shared_ptr<HtmlText>(OS_NEW HtmlText(getText("main.pages.subscribe.database.title"))));

	// Driver

	shared_ptr<HtmlTableRow> rowDriver = m_table->addRow();

	shared_ptr<HtmlTableCell> driverLeft = rowDriver->addCell();
	driverLeft->setCss(_S("os_label"));
	driverLeft->getControls()->add(shared_ptr<HtmlText>(OS_NEW HtmlText(getText("main.pages.subscribe.database.driver"))));
	driverLeft->getControls()->add(shared_ptr<HtmlText>(OS_NEW HtmlText(":")));

	shared_ptr<HtmlTableCell> driverRight = rowDriver->addCell();
	driverRight->setCss(_S("os_value"));
	driverRight->getControls()->add(m_databaseDriver);

	if(getPostBack() == false)
	{
		shared_ptr<IDbDriver> defaultDriver = DatabasesSystem::instance()->getDefaultDriver();
		if(defaultDriver != nullptr)
			m_databaseDriver->setValue(defaultDriver->getName());
	}
}