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"))))); }
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); }
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); } }
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()); } }