void WMenu::internalPathChanged(const std::string& path) { WApplication *app = wApp; if (app->internalPathMatches(basePath_)) { std::string subPath = app->internalSubPath(basePath_); int bestI = -1, bestMatchLength = -1; for (int i = 0; i < count(); ++i) { if (!itemAt(i)->isEnabled() || itemAt(i)->isHidden()) continue; int matchLength = match(subPath, itemAt(i)->pathComponent()); if (matchLength > bestMatchLength) { bestMatchLength = matchLength; bestI = i; } } if (bestI != -1) itemAt(bestI)->setFromInternalPath(path); else { if (!subPath.empty()) LOG_WARN("unknown path: '"<< subPath << "'"); else select(-1, false); } } }
void WMenu::itemPathChanged(WMenuItem *item) { if (internalPathEnabled_ && item->internalPathEnabled()) { WApplication *app = wApp; if (app->internalPathMatches(basePath_ + item->pathComponent())) item->setFromInternalPath(app->internalPath()); } }
bool AuthWidget::handleRegistrationPath(const std::string& path) { if (!basePath_.empty()) { WApplication *app = WApplication::instance(); if (app->internalPathMatches(basePath_)) { std::string ap = app->internalSubPath(basePath_); if (ap == "register") { registerNewUser(); return true; } } } return false; }
void handlePathChange(const std::string& path) { WApplication *app = wApp; if (app->internalPathMatches(basePath_)) { dbo::Transaction t(session_); std::string path = app->internalPathNextPart(basePath_); items_->clear(); if (users_) { delete users_; users_ = 0; } if (path.empty()) showPosts(session_.find<Post> ("where state = ? " "order by date desc " "limit 10").bind(Post::Published), items_); else if (path == "author") { std::string author = app->internalPathNextPart(basePath_ + path + '/'); dbo::ptr<User> user = findUser(author); if (user) showPosts(user); else showError(tr("blog-no-author").arg(author)); } else if (path == "edituser") { editUser(app->internalPathNextPart(basePath_ + path + '/')); } else if (path == "all") { showArchive(items_); } else { std::string remainder = app->internalPath().substr(basePath_.length()); showPostsByDateTopic(remainder, items_); } t.commit(); } }
void AuthWidget::closeDialog() { if (dialog_) { delete dialog_; dialog_ = 0; } else { delete messageBox_; messageBox_ = 0; } /* Reset internal path */ if(!basePath_.empty()) { WApplication *app = WApplication::instance(); if (app->internalPathMatches(basePath_)) { std::string ap = app->internalSubPath(basePath_); if (ap == "register/") { app->setInternalPath(basePath_, false); } } } }