void Comments::anchorClicked(const QUrl & url) { if(url.host().isEmpty() && url.path() == "edit") { #if QT_VERSION >= 0x050000 int cid = QUrlQuery(url).queryItemValue("id").toInt(); #else int cid = url.queryItemValue("id").toInt(); #endif if(userCanEdit(cid)) { ParameterList params; params.append("mode", "edit"); params.append("sourceType", _sourcetype); params.append("source_id", _sourceid); params.append("comment_id", cid); params.append("commentIDList", _commentIDList); comment newdlg(this, "", true); newdlg.set(params); newdlg.exec(); refresh(); } } else { QDesktopServices::openUrl(url); } }
void Comments::sCheckButtonPriv(bool pValid) { _viewComment->setEnabled(pValid); if(pValid) { _editComment->setEnabled(userCanEdit(_comment->id()) && _editable); } else _editComment->setEnabled(false); }
void Comments::refresh() { _browser->document()->clear(); _editmap->clear(); _editmap2->clear(); if(-1 == _sourceid) { _comment->clear(); return; } XSqlQuery comment; if(_sourcetype != "CRMA") { _comment->hideColumn(2); comment.prepare( "SELECT comment_id, comment_date, comment_source," " CASE WHEN (cmnttype_name IS NOT NULL) THEN cmnttype_name" " ELSE :none" " END AS type," " comment_user," " firstLine(detag(comment_text)) AS first," " comment_text, " " COALESCE(cmnttype_editable,false) AS editable, " " comment_public, " " comment_user=getEffectiveXtUser() AS self " "FROM comment LEFT OUTER JOIN cmnttype ON (comment_cmnttype_id=cmnttype_id) " "WHERE ( (comment_source=:source)" " AND (comment_source_id=:sourceid) ) " "ORDER BY comment_date DESC;" ); } else { // If it's CRMAccount we want to do some extra joining in our SQL _comment->showColumn(2); comment.prepare( "SELECT comment_id, comment_date, comment_source," " CASE WHEN (cmnttype_name IS NOT NULL) THEN cmnttype_name" " ELSE :none" " END AS type," " comment_user," " firstLine(detag(comment_text)) AS first," " comment_text, " " COALESCE(cmnttype_editable,false) AS editable, " " comment_public, " " comment_user=getEffectiveXtUser() AS self " " FROM comment LEFT OUTER JOIN cmnttype ON (comment_cmnttype_id=cmnttype_id) " " WHERE((comment_source=:source)" " AND (comment_source_id=:sourceid) ) " " UNION " "SELECT comment_id, comment_date, comment_source," " CASE WHEN (cmnttype_name IS NOT NULL) THEN cmnttype_name" " ELSE :none" " END," " comment_user, firstLine(detag(comment_text))," " comment_text, " " COALESCE(cmnttype_editable,false) AS editable, " " comment_public, " " comment_user=getEffectiveXtUser() AS self " " FROM crmacct, comment LEFT OUTER JOIN cmnttype ON (comment_cmnttype_id=cmnttype_id) " " WHERE((comment_source=:sourceCust)" " AND (crmacct_id=:sourceid)" " AND (comment_source_id=crmacct_cust_id) ) " " UNION " "SELECT comment_id, comment_date, comment_source," " CASE WHEN (cmnttype_name IS NOT NULL) THEN cmnttype_name" " ELSE :none" " END," " comment_user, firstLine(detag(comment_text))," " comment_text, " " COALESCE(cmnttype_editable,false) AS editable, " " comment_public, " " comment_user=getEffectiveXtUser() AS self " " FROM crmacct, comment LEFT OUTER JOIN cmnttype ON (comment_cmnttype_id=cmnttype_id) " " WHERE((comment_source=:sourceVend)" " AND (crmacct_id=:sourceid)" " AND (comment_source_id=crmacct_vend_id) ) " " UNION " "SELECT comment_id, comment_date, comment_source," " CASE WHEN (cmnttype_name IS NOT NULL) THEN cmnttype_name" " ELSE :none" " END," " comment_user, firstLine(detag(comment_text))," " comment_text, " " COALESCE(cmnttype_editable,false) AS editable, " " comment_public, " " comment_user=getEffectiveXtUser() AS self " " FROM cntct, comment LEFT OUTER JOIN cmnttype ON (comment_cmnttype_id=cmnttype_id) " " WHERE((comment_source=:sourceContact)" " AND (cntct_crmacct_id=:sourceid)" " AND (comment_source_id=cntct_id) ) " "ORDER BY comment_date DESC;" ); comment.bindValue(":sourceCust", "C"); comment.bindValue(":sourceContact", "T"); comment.bindValue(":sourceVend", "V"); } comment.bindValue(":none", tr("None")); comment.bindValue(":source", _sourcetype); comment.bindValue(":sourceid", _sourceid); comment.exec(); QString lclHtml = "<body>"; QRegExp br("\r?\n"); _commentIDList.clear(); while(comment.next()) { _editmap->insert(comment.value("comment_id").toInt(),comment.value("editable").toBool()); _editmap2->insert(comment.value("comment_id").toInt(),comment.value("self").toBool()); int cid = comment.value("comment_id").toInt(); _commentIDList.push_back(cid); lclHtml += comment.value("comment_date").toDateTime().toString(); lclHtml += " "; lclHtml += comment.value("type").toString(); lclHtml += " "; lclHtml += comment.value("comment_user").toString(); if(_x_metrics && _x_metrics->boolean("CommentPublicPrivate")) { lclHtml += " ("; if(comment.value("comment_public").toBool()) lclHtml += "Public"; else lclHtml += "Private"; lclHtml += ")"; } if(userCanEdit(cid)) { lclHtml += " <a href=\"edit?id="; lclHtml += QString::number(cid); lclHtml += "\">edit</a>"; } lclHtml += "<p>\n<blockquote>"; lclHtml += comment.value("comment_text").toString().replace("<", "<").replace(br,"<br>\n"); lclHtml += "</pre></blockquote>\n<hr>\n"; } lclHtml += "</body>"; _browser->document()->setHtml(lclHtml); comment.first(); _comment->populate(comment); }
void Comments::refresh() { _browser->document()->clear(); if(-1 == _sourceid) { _comment->clear(); return; } XSqlQuery comment; if(_source != CRMAccount) { comment.prepare( "SELECT comment_id, comment_date," " CASE WHEN (cmnttype_name IS NOT NULL) THEN cmnttype_name" " ELSE :none" " END AS type," " comment_user," " firstLine(detag(comment_text)) AS first," " comment_text " "FROM comment LEFT OUTER JOIN cmnttype ON (comment_cmnttype_id=cmnttype_id) " "WHERE ( (comment_source=:source)" " AND (comment_source_id=:sourceid) ) " "ORDER BY comment_date;" ); } else { // If it's CRMAccount we want to do some extra joining in our SQL comment.prepare( "SELECT comment_id, comment_date," " CASE WHEN (cmnttype_name IS NOT NULL) THEN cmnttype_name" " ELSE :none" " END AS type," " comment_user," " firstLine(detag(comment_text)) AS first," " comment_text " " FROM comment LEFT OUTER JOIN cmnttype ON (comment_cmnttype_id=cmnttype_id) " " WHERE((comment_source=:source)" " AND (comment_source_id=:sourceid) ) " " UNION " "SELECT comment_id, comment_date," " CASE WHEN (cmnttype_name IS NOT NULL) THEN cmnttype_name" " ELSE :none" " END," " comment_user, firstLine(detag(comment_text))," " comment_text " " FROM crmacct, comment LEFT OUTER JOIN cmnttype ON (comment_cmnttype_id=cmnttype_id) " " WHERE((comment_source=:sourceCust)" " AND (crmacct_id=:sourceid)" " AND (comment_source_id=crmacct_cust_id) ) " " UNION " "SELECT comment_id, comment_date," " CASE WHEN (cmnttype_name IS NOT NULL) THEN cmnttype_name" " ELSE :none" " END," " comment_user, firstLine(detag(comment_text))," " comment_text " " FROM crmacct, comment LEFT OUTER JOIN cmnttype ON (comment_cmnttype_id=cmnttype_id) " " WHERE((comment_source=:sourceVend)" " AND (crmacct_id=:sourceid)" " AND (comment_source_id=crmacct_vend_id) ) " " UNION " "SELECT comment_id, comment_date," " CASE WHEN (cmnttype_name IS NOT NULL) THEN cmnttype_name" " ELSE :none" " END," " comment_user, firstLine(detag(comment_text))," " comment_text " " FROM cntct, comment LEFT OUTER JOIN cmnttype ON (comment_cmnttype_id=cmnttype_id) " " WHERE((comment_source=:sourceContact)" " AND (cntct_crmacct_id=:sourceid)" " AND (comment_source_id=cntct_id) ) " "ORDER BY comment_date;" ); comment.bindValue(":sourceCust", _commentMap[Customer].ident); comment.bindValue(":sourceContact", _commentMap[Contact].ident); comment.bindValue(":sourceVend", _commentMap[Vendor].ident); } comment.bindValue(":none", tr("None")); comment.bindValue(":source", _commentMap[_source].ident); comment.bindValue(":sourceid", _sourceid); comment.exec(); QString lclHtml = "<body>"; QRegExp br("\r?\n"); _commentIDList.clear(); while(comment.next()) { int cid = comment.value("comment_id").toInt(); _commentIDList.push_back(cid); lclHtml += comment.value("comment_date").toDateTime().toString(); lclHtml += " "; lclHtml += comment.value("type").toString(); lclHtml += " "; lclHtml += comment.value("comment_user").toString(); if(userCanEdit(cid)) { lclHtml += " <a href=\"edit?id="; lclHtml += QString::number(cid); lclHtml += "\">edit</a>"; } lclHtml += "<p>\n<blockquote>"; lclHtml += comment.value("comment_text").toString().replace(br,"<br>\n"); lclHtml += "</pre></blockquote>\n<hr>\n"; } lclHtml += "</body>"; _browser->document()->setHtml(lclHtml); comment.first(); _comment->populate(comment); }