initial draft

This commit is contained in:
msyu
2025-06-02 16:16:51 +03:00
commit 529334d03b
272 changed files with 22684 additions and 0 deletions
+185
View File
@@ -0,0 +1,185 @@
<cfsilent>
<cfimport prefix="m" taglib="lib"/>
<cfimport prefix="c" taglib="lib/controls"/>
<cfimport prefix="d" taglib="lib/data"/>
<cfimport prefix="layout" taglib="layout"/>
</cfsilent><m:silent silent="No">
<cffunction name="plain2HtmClean">
<cfargument name="s" type="string"/>
<cfreturn request.plain2htm(request.cleanHtm(s))/>
</cffunction>
<cffunction name="cleanInput">
<cfargument name="s" type="string"/>
<cfreturn htmlEditFormat(s)/>
</cffunction>
<m:prepare_detail entity="usr" key="usr_id" pageInfoOut="pageInfo"/>
<d:bean readonly=#!pageInfo.writePermitted()# table="usr" datasource="#request.DS#" output="d" status="status">
<d:param field="usr_id" type="integer" key autoincrement/>
<d:param field="login" type="varchar" size="255" preprocessor=#cleanInput#/>
<d:param field="email" type="varchar" size="255" preprocessor=#cleanInput#/>
<d:param field="firstname" type="varchar" size="255" preprocessor=#cleanInput#/>
<d:param field="middlename" type="varchar" size="255" preprocessor=#cleanInput#/>
<d:param field="lastname" type="varchar" size="255" preprocessor=#cleanInput#/>
<d:param field="descr" type="varchar" preprocessor=#plain2HtmClean#/>
<d:param field="creator_id" type="integer" value="#request.usr_id#" skipUpdate/>
<d:param field="updater_id" type="integer" value="#request.usr_id#" />
<d:param field="dt_created" type="timestamp" value="#Now()#" skipUpdate/>
<d:param field="dt_updated" type="timestamp" value="#Now()#"/>
</d:bean>
<cfif NOT status.errorState>
<cfif structKeyExists(form,"save") OR structKeyExists(form,"saveAndClose")>
<cfparam name="password"/>
<cfset password=trim(password)/>
<cfif #password# NEQ "password_unchanged">
<cfquery datasource="#request.DS#">
update usr set password=<cfqueryparam cfsqltype="cf_sql_varchar" value="#request.passwordHashCreate(password)#"/>
where usr_id=<cfqueryparam cfsqltype="cf_sql_integer" value="#d.usr_id#"/>
</cfquery>
</cfif>
</cfif>
</cfif>
<m:dispatch_detail
usePRG="No"<!---*** --->
pageInfo=#pageInfo#
id="#d.usr_id#"
status=#pageInfo.status#
trackOut="tr"
idAttributesOut="id"
/>
<!--- decoration --->
<cfquery name="qDecoration" datasource="#request.DS#">
select
a.login as creator, a.shortname as creator_shortname, m.login as updater, m.shortname as updater_shortname
from #pageInfo.entity# e
left outer join usr a on (e.creator_id=a.usr_id)
left outer join usr m on (e.updater_id=m.usr_id)
where e.#pageInfo.key#=<cfqueryparam attributeCollection=#id#/>
</cfquery>
</m:silent><!---
------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------
---><layout:page section="header" pageInfo=#pageInfo#>
<layout:attribute name="title">
<cfoutput>
Пользователь
<cfif d.usr_id GT 0>
<b>#d.login#</b>
[#d.usr_id#]
</cfif>
</cfoutput>
</layout:attribute>
</layout:page>
<cfif status.errorState GT 0>
<cfoutput><div class="err">#status.errorMessage#</div></cfoutput>
</cfif>
<m:ac obj="usr"><!--- Если нет доступа на чтение, не показывается ничего. Доступ на запись включает доступ на чтение --->
<cfoutput>
<input type="hidden" name="usr_id" value="#d.usr_id#"/>
<input type="hidden" name="track" value="#tr.self#"/>
<input type="hidden" name="pass" value=""/><!--- pass marker to prevent save on submit --->
<div class="detail">
<div class="tr">
<div class="th">ID</div>
<div class="td">
#d.usr_id#
</div>
</div>
<div class="tr">
<div class="th">Логин</div>
<div class="td">
<input type="text" name="login" value="#d.login#" size="70"/>
</div>
</div>
<div class="tr">
<div class="th">E-mail</div>
<div class="td">
<input type="text" name="email" value="#d.email#" size="70"/>
</div>
</div>
<div class="tr">
<div class="th">Имя</div>
<div class="td">
<input type="text" name="firstname" value="#d.firstname#" size="70"/>
</div>
</div>
<div class="tr">
<div class="th">Отчество</div>
<div class="td">
<input type="text" name="middlename" value="#d.middlename#" size="70"/>
</div>
</div>
<div class="tr">
<div class="th">Фамилия</div>
<div class="td">
<input type="text" name="lastname" value="#d.lastname#" size="70"/>
</div>
</div>
<div class="tr">
<div class="th">Пароль</div>
<div class="td">
<input type="password" name="password" value="password_unchanged" size="70"/>
</div>
</div>
<div class="tr">
<div class="th">Описание</div>
<div class="td">
<textarea name="descr" rows="10" cols="100">#request.htm2plain(d.descr)#</textarea>
</div>
</div>
<div class="tr">
<div class="th">Создано</div>
<div class="td">
#dateFormat(d.dt_created,'DD.MM.YYYY')# #timeFormat(d.dt_created,'HH:MM')#
#qDecoration.creator# <cfif len(qDecoration.creator_shortname)>(#qDecoration.creator_shortname#)</cfif>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
Изменено
#dateFormat(d.dt_updated,'DD.MM.YYYY')# #timeFormat(d.dt_updated,'HH:MM')#
#qDecoration.updater# <cfif len(qDecoration.updater_shortname)>(#qDecoration.updater_shortname#)</cfif>
</div>
</div>
</div>
</cfoutput>
<layout:page section="extension" closeForm="Yes"/>
<cfif d.usr_id GT 0>
<cfmodule template="mod/usr_role.cfm"
usr_id=#d.usr_id#
fwx=#tr.fwx#
self=#tr.self#
editable=#pageInfo.writePermitted()#
/>
* Для добавления пользователю роли выберите желаемую роль в выпадающем списке и нажмите кнопку со "*" слева от него (нажимать "Сохранить" в основной форме - справа вверху - для этого не нужно)
</cfif>
</m:ac>
<layout:page section="footer"/>