My favorites | Sign in
Project Home Downloads Wiki Issues Source
Checkout   Browse   Changes    
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<components
xmlns:d="urn:schemas-nreco:nicnet:dalc:v1"
xmlns:r="urn:schemas-nreco:nreco:core:v1"
xmlns:e="urn:schemas-nreco:nreco:entity:v1"
xmlns:xi="http://www.w3.org/2003/XInclude">

<db-dalc name="db" xmlns="urn:schemas-nreco:nicnet:dalc:v1" datasetfactory="dsFactory" manager-name="dbManager">
<driver>
<mssql>
<connection><string name="mainDb"/></connection>
</mssql>
</driver>
<permissions>
<query sourcename="accounts" operation="retrieve">
1=1
</query>
<query sourcename="accounts" operation="update">
username="{var:arg}" or "{var:arg}" in account_roles(rolename="admin")[account_roles.username]
</query>

<!-- database-layer retrieve permissions for pages -->
<query sourcename="pages" operation="retrieve">
is_public="true":boolean
or
(author="{var:arg}" and author!="")
or
id in page_visibility(
page_visibility.account_id = accounts(accounts.username="{var:arg}")[accounts.id]
)[page_visibility.page_id]
or
"{var:arg}" in account_roles(rolename="admin")[account_roles.username]
</query>

</permissions>
<dataviews>
<view name="accounts_view" origin="accounts">
<fields>
<select>a.*, 'User: '+a.username as rdf_label</select>
<count>count(*)</count>
<mapping>
<field name="account_id">a.id</field>
<field name="rdf_label">a.username</field>
</mapping>
</fields>
<sql>
select {var:fields}
from accounts a
WHERE 1=1
{ognl:@String@IsNullOrEmpty(#whereExpression) ? "" : " and "+#whereExpression}
{ognl:@String@IsNullOrEmpty(#sortExpression) ? "" : " ORDER BY "+#sortExpression}
</sql>
</view>

<view name="pages_view" origin="pages">
<fields>
<select>p.*, a.id as author_id, 'Page: '+p.title as rdf_label</select>
<count>count(p.id)</count>
<mapping>
<field name="id">p.id</field>
<field name="rdf_label">p.title</field>
</mapping>
</fields>
<sql>
select {var:fields}
from pages p
left join accounts a ON (a.username=p.author)
WHERE 1=1
{ognl:@String@IsNullOrEmpty(#whereExpression) ? "" : " and "+#whereExpression}
{ognl:@String@IsNullOrEmpty(#sortExpression) ? "" : " ORDER BY "+#sortExpression}
</sql>
</view>

<view name="pages_by_type_view" origin="pages">
<fields>
<select>*</select>
<count>count(p.id)</count>
<mapping>
<field name="id">p.id</field>
</mapping>
</fields>
<sql>
select p.content_type, count(id) as count
from pages p
GROUP BY p.content_type
</sql>
</view>

<view name="pages_by_tag_view">
<fields>
<select>*</select>
<count>count(t.id)</count>
</fields>
<sql>
select
t.title, t.id,
(select count(*) from page_tags pt where pt.tag_id=t.id) as count
from tags t
</sql>
</view>

</dataviews>
<triggers>
<entity-dalc-triggers>
<xi:include href="entities.xml" xpointer="xpointer(/components/*)"/>
</entity-dalc-triggers>

<lucene-dalc-triggers>
<xi:include href="lucene.xml" xpointer="xpointer(/components/*)"/>
</lucene-dalc-triggers>

<datarow event="inserting" sourcename="pages">
<r:operation>
<r:chain>
<!-- check title unique -->
<r:provide result="title">
<r:target>
<r:dalc from="db">
<r:query>pages(title="{databind:[row][title]}")[title]</r:query>
</r:dalc>
</r:target>
</r:provide>
<r:execute if='#row["title"].ToString()==#title'>
<r:target>
<r:throw message="Page with such title already exists."/>
</r:target>
</r:execute>
</r:chain>
</r:operation>
</datarow>

</triggers>
</db-dalc>


</components>

Change log

r735 by fedorchenko on Aug 7, 2009   Diff
Web Example: build fix
Go to: 

Older revisions

r719 by fedorchenko on Jul 31, 2009   Diff
Lucene.NET integration: total
refactoring.
r694 by fedorchenko on Jul 21, 2009   Diff
OGNL update + DALC-based membership
provider fixes.
r673 by fedorchenko on Jun 23, 2009   Diff
Operation model refactoring
All revisions of this file

File info

Size: 3966 bytes, 135 lines
Powered by Google Project Hosting