46 lines
2.8 KiB
Plaintext
46 lines
2.8 KiB
Plaintext
<cfsilent>
|
||
<cfimport prefix="c" taglib="."/>
|
||
|
||
|
||
<!---*** идея включить титул в метаданные была не совсем пустой, но когда титул определяется в селекте, это не слишком удобно --->
|
||
<cfassociate basetag="cf_grid_head" datacollection="headersArray"/>
|
||
<cfset envelope=getBaseTagData('cf_grid_head',1)/>
|
||
|
||
<cfparam name="ATTRIBUTES.title" type="string" default="#envelope.ATTRIBUTES.titleMap[ATTRIBUTES.name].title#"/>
|
||
<cfparam name="ATTRIBUTES.name" type="string"/><!--- Заголовок указвается на том поле, по которому будет сортировка, а не на том, которе отображается --->
|
||
<cfparam name="ATTRIBUTES.arrows" type="boolean" default="Yes"/>
|
||
|
||
|
||
|
||
<cfset attributeList="name,arrows,title"/>
|
||
|
||
<!--- В данном случае реализован подход: дополнительные атрибуты передаются вниз.
|
||
Другой вариант - создавать атрибут extra, в который писать суффикс QueryString.
|
||
Первый подход, использованный здесь, позволяет иметь доступ к дополнительным атрибутам, но непонятно, зачем - ведь их имена все равно неизвестны.
|
||
Очевидный минус этого подхода - возможный конфликт имен с именами существующих атрибутов --->
|
||
<cfset extraAttributes=structNew()/>
|
||
|
||
<!--- дополнительные атрибуты родительского тега--->
|
||
<cfif StructKeyExists(envelope, "extraAttributes") AND isStruct(envelope.extraAttributes)>
|
||
<cfloop collection=#envelope.extraAttributes# item="attr">
|
||
<cfif NOT listFindNoCase(attributeList, attr)><!--- проверка относительно локальных атрибутов, чтобы их не перетереть--->
|
||
<cfset val="#structFind(envelope.extraAttributes, attr)#"/>
|
||
<cfif IsSimpleValue(val)>
|
||
<cfset structInsert(extraAttributes, attr, val)/>
|
||
</cfif>
|
||
</cfif>
|
||
</cfloop>
|
||
</cfif>
|
||
|
||
<cfloop collection=#ATTRIBUTES# item="attr">
|
||
<cfif NOT listFindNoCase(attributeList, attr)>
|
||
<cfset val="#structFind(ATTRIBUTES, attr)#"/>
|
||
<cfif IsSimpleValue(val)>
|
||
<cfset structInsert(extraAttributes, attr, val, "Yes")/><!--- локальные атрибуты перетрут родительские --->
|
||
</cfif>
|
||
</cfif>
|
||
</cfloop>
|
||
|
||
|
||
</cfsilent><cfif thisTag.executionMode is "end"><cfoutput>#ATTRIBUTES.title#
|
||
<cfif ATTRIBUTES.arrows><c:order_arrows sortArray=#envelope.ATTRIBUTES.sortArray# n=#envelope.ATTRIBUTES.titleMap[ATTRIBUTES.name].ordinal# attributeCollection=#extraAttributes#/></cfif></cfoutput></cfif> |