class admin_history_article_subject(BaseSubject): def __init__(self): BaseSubject.__init__(self) self.params = ParamUtil(request) def execute(self): if self.loginUser == None: return self.LOGIN if self.isAdmin == False and self.isContentAdmin() == False: self.addActionError(u"您你没有管理的权限!") return self.ERROR year = self.params.safeGetIntParam("backYear") if year == 0: self.addActionError(u"请选择一个年份。") return self.ERROR if request.getMethod() == "POST": articleService = __jitar__.articleService articleIdList = self.params.safeGetIntValues("articleId") for id in articleIdList: articleService.deleteArticleWithRelativeData(id,year) f = self.params.getStringParam("f",None) sc = self.params.getIntParamZeroAsNull("sc") k = self.params.getStringParam("k") fieldName = None if f == "lname": fieldName = "LoginName" elif f == "uname": fieldName = "UserTrueName" else: fieldName = "Title" whereClause = "subjectId = " + str(self.subject.metaSubject.msubjId) + " And gradeId = " + str(self.subject.metaGrade.gradeId) if k != None and fieldName != None: k = k.replace("'","") k = k.replace("%","") k = k.replace(";","") whereClause += "And " + fieldName + " LIKE '%" + k + "%'" if sc != None: whereClause += " And sysCateId = " + str(sc) pagingService = __spring__.getBean("pagingService") pagingQuery = PagingQuery() pagingQuery.keyName = "ArticleId" pagingQuery.fetchFieldsName = "*" pagingQuery.orderByFieldName = "ArticleId DESC" pagingQuery.spName = "findPagingArticle" pagingQuery.tableName = "HtmlArticle" + str(year) pagingQuery.whereClause = whereClause totalCount = self.params.safeGetIntParam("totalCount") pager = Pager() pager.setCurrentPage(self.params.safeGetIntParam("page", 1)) pager.setPageSize(20) pager.setItemNameAndUnit(u"文章", u"篇") pager.setUrlPattern(self.params.generateUrlPattern()) if totalCount == 0: pager.setTotalRows(pagingService.getRowsCount(pagingQuery)) else: pager.setTotalRows(totalCount) article_list = pagingService.getPagingList(pagingQuery, pager) request.setAttribute("k", k) request.setAttribute("f", f) request.setAttribute("sc", sc) request.setAttribute("article_list", article_list) request.setAttribute("pager", pager) request.setAttribute("year", year) request.setAttribute("subject", self.subject) self.putArticleCategoryTree() return "/WEB-INF/subjectmanage/admin_history_article_subject.ftl" def putArticleCategoryTree(self): article_categories = __jitar__.categoryService.getCategoryTree('default') request.setAttribute("article_categories", article_categories)
class admin_history_article(ActionExecutor, SubjectMixiner): def __init__(self): self.params = ParamUtil(request) def execute(self): if self.loginUser == None: return ActionResult.LOGIN accessControlService = __spring__.getBean("accessControlService") if False == accessControlService.isSystemContentAdmin(self.loginUser): self.addActionError(u"您不具有文章管理权限, 或者您的信息填写不完整, 或未经系统管理员审核.") return ActionResult.ERROR year = self.params.safeGetIntParam("backYear") if year == 0: self.addActionError(u"请选择一个年份。") return ActionResult.ERROR if request.getMethod() == "POST": articleService = __jitar__.articleService articleIdList = self.params.safeGetIntValues("articleId") cmd = self.params.getStringParam("cmd") if cmd == "": cmd = None if cmd == "crash": for id in articleIdList: articleService.deleteArticleWithRelativeData(id, year) elif cmd == "audit": for id in articleIdList: article = articleService.getArticle(id) if article != None: articleService.auditArticle(article) elif cmd == "unaudit": for id in articleIdList: article = articleService.getArticle(id) if article != None: articleService.unauditArticle(article) su = self.params.getIntParamZeroAsNull("su") f = self.params.getStringParam("f", None) gradeId = self.params.getIntParamZeroAsNull("gradeId") sc = self.params.getIntParamZeroAsNull("sc") k = self.params.getStringParam("k") approved = self.params.getStringParam("approved", "") fieldName = None if f == "lname": fieldName = "LoginName" elif f == "uname": fieldName = "UserTrueName" else: fieldName = "Title" whereClause = "" if k != None and fieldName != None: k = k.replace("'", "") k = k.replace("%", "") k = k.replace(";", "") whereClause += "And " + fieldName + " LIKE '%" + k + "%'" if su != None: whereClause += " And subjectId = " + str(su) if gradeId != None: whereClause += " And gradeId = " + str(gradeId) if sc != None: whereClause += " And sysCateId = " + str(sc) if approved != "" and approved.isdigit(): whereClause += " And AuditState = " + approved if whereClause != "" and len(whereClause) > 4: whereClause = whereClause[4:len(whereClause)] else: whereClause = "" pagingService = __spring__.getBean("pagingService") pagingQuery = PagingQuery() pagingQuery.keyName = "ArticleId" pagingQuery.fetchFieldsName = "*" pagingQuery.orderByFieldName = "ArticleId DESC" pagingQuery.spName = "findPagingArticle" pagingQuery.tableName = "HtmlArticle" + str(year) pagingQuery.whereClause = whereClause totalCount = self.params.safeGetIntParam("totalCount") pager = Pager() pager.setCurrentPage(self.params.safeGetIntParam("page", 1)) pager.setPageSize(20) pager.setItemNameAndUnit(u"文章", u"篇") pager.setUrlPattern(self.params.generateUrlPattern()) if totalCount == 0: pager.setTotalRows(pagingService.getRowsCount(pagingQuery)) else: pager.setTotalRows(totalCount) article_list = pagingService.getPagingList(pagingQuery, pager) request.setAttribute("k", k) request.setAttribute("f", f) request.setAttribute("gradeId", gradeId) request.setAttribute("su", su) request.setAttribute("sc", sc) request.setAttribute("approved", approved) request.setAttribute("article_list", article_list) request.setAttribute("pager", pager) request.setAttribute("year", year) self.putSubjectList() self.putGradeList() self.putArticleCategoryTree() return "/WEB-INF/ftl/admin/admin_history_article.ftl" def putArticleCategoryTree(self): article_categories = __jitar__.categoryService.getCategoryTree( 'default') request.setAttribute("article_categories", article_categories)
class articles(SubjectMixiner): def __init__(self): self.params = ParamUtil(request) self.cate_svc = __jitar__.categoryService self.unitService = __spring__.getBean("unitService") self.backYearList = None self.hasErrorMessage = None def execute(self): rootUnit = self.unitService.getRootUnit() if rootUnit == None: request.setAttribute( "errMessage", u"没有根机构信息,请超级管理员登录到后台管理在“其它”-“组织机构管理”创建一个根机构信息。<a href='manage/admin.py'>进后台管理</a>" ) return "/WEB-INF/ftl/site_err.ftl" self.unit = rootUnit self.get_backyear_list() # 文章分类 self.get_article_cate() # 学科分类 self.get_subject_list() # 学段分类 self.get_grade_list() # 查询文章列表 self.get_article_list() # 页面导航高亮为 'articles' request.setAttribute("head_nav", "articles") response.contentType = "text/html; charset=UTF-8" if self.hasErrorMessage != None: response.getWriter().write(self.hasErrorMessage) return return "/WEB-INF/ftl/site_articles.ftl" # 文章分类 def get_article_cate(self): blog_cates = self.cate_svc.getCategoryTree("default") request.setAttribute("blog_cates", blog_cates) # 学段 def get_grade_list(self): request.setAttribute("gradeId", self.params.getIntParamZeroAsNull("gradeId")) self.putGradeList() # 学科 def get_subject_list(self): self.putSubjectList() # 查询文章列表 def get_article_list(self): year = self.params.getIntParamZeroAsNull("year") if self.backYearList == None: year = None if self.backYearList != None: IsValidYear = False for y in self.backYearList: if year == y.backYear: IsValidYear = True break if IsValidYear == False: year = None blogUserId = self.params.getIntParamZeroAsNull("userId") strWhereClause = "HideState=0 And AuditState=0 And DraftState=0 And DelState=0 And ApprovedPathInfo Like '%/" + str( self.unit.unitId) + "/%'" if blogUserId != None: strWhereClause += " And UserId=" + str(blogUserId) strOrderBy = "ArticleId DESC" list_type = u"最新文章" type = self.params.getStringParam("type") if type == "" or type == None: type = "new" if type == "hot": strOrderBy = "ViewCount DESC" list_type = u"热门文章" elif type == "best": strWhereClause = strWhereClause + " And BestState = 1" list_type = u"精华文章" elif type == "rcmd": strWhereClause = strWhereClause + " And RcmdPathInfo Like '%/" + str( self.unit.unitId) + "/%'" list_type = u"推荐文章" elif type == "cmt": strOrderBy = "CommentCount DESC" list_type = u"评论最多文章" elif type == "famous": # 为了不增加额外的表,现在先得到全部名师的 id,然后再去查询。 qry = UserQuery("u.userId") qry.userTypeId = 1 user_count = qry.count() user_list = qry.list(user_count) if user_list == None or len(user_list) < 1: nodata = True else: uid = "" for u in user_list: uid += str(u) + "," uid = uid[0:len(uid) - 1] strWhereClause = strWhereClause + " And UserId IN (" + uid + ")" list_type = u"名师文章" elif type == "digg": strOrderBy = "Digg DESC" list_type = u"按顶排序" elif type == "trample": strOrderBy = "Trample DESC" list_type = u"按踩排序" elif type == "star": strOrderBy = "StarCount/CommentCount DESC" strWhereClause = strWhereClause + " And CommentCount > 0" list_type = u"按星排序" else: type = "new" k = self.params.getStringParam("k") if k != None and k != "": newKey = k.replace("'", "''").replace("%", "[%]").replace( "_", "[_]").replace("[", "[[]") strWhereClause = strWhereClause + " And Title Like '%" + newKey + "%'" subjectId = self.params.getIntParamZeroAsNull("subjectId") sysCateId = self.params.getIntParamZeroAsNull("categoryId") gradeId = self.params.getIntParamZeroAsNull("gradeId") if subjectId != None: strWhereClause = strWhereClause + " And SubjectId = " + str( subjectId) if sysCateId != None: #只查询分类自己的 #strWhereClause = strWhereClause + " And SysCateId = " + str(sysCateId) #查询包含子孙分类的 list = self.cate_svc.getCategoryIds(sysCateId) cateIds = "" for c in list: if cateIds == "": cateIds = cateIds + str(c) else: cateIds = cateIds + "," + str(c) strWhereClause = strWhereClause + " And SysCateId IN (" + cateIds + ")" if gradeId != None: strWhereClause = strWhereClause + " And GradeId = " + str(gradeId) pagingService = __spring__.getBean("pagingService") pagingQuery = PagingQuery() pagingQuery.keyName = "ArticleId" pagingQuery.fetchFieldsName = "*" pagingQuery.orderByFieldName = strOrderBy pagingQuery.spName = "findPagingArticle" if year == None: pagingQuery.tableName = "Jitar_Article" else: pagingQuery.tableName = "HtmlArticle" + str(year) pagingQuery.whereClause = strWhereClause totalCount = self.params.safeGetIntParam("totalCount") pager = Pager() pager.setCurrentPage(self.params.safeGetIntParam("page", 1)) pager.setPageSize(20) pager.setItemNameAndUnit(u"文章", u"篇") pager.setUrlPattern(self.params.generateUrlPattern()) if totalCount == 0: pager.setTotalRows(pagingService.getRowsCount(pagingQuery)) else: pager.setTotalRows(totalCount) article_list = pagingService.getPagingList(pagingQuery, pager) request.setAttribute("type", type) request.setAttribute("list_type", list_type) request.setAttribute("article_list", article_list) request.setAttribute("categoryId", sysCateId) request.setAttribute("subjectId", subjectId) request.setAttribute("k", k) request.setAttribute("pager", pager) request.setAttribute("year", year) def get_backyear_list(self): webSiteManageService = __spring__.getBean("webSiteManageService") self.backYearList = webSiteManageService.getBackYearList("article") if self.backYearList == None or len(self.backYearList) < 1: return request.setAttribute("backYearList", self.backYearList)