@@ -11,25 +11,27 @@ Function getPersonas()->$personas : Collection
1111
1212 var $folder : 4D:C1709 .Folder
1313 var $file : 4D:C1709 .File
14- var $lang : Text
14+ var $lang ; $DBname : Text
1515 var $localizedPersonaFolders ; $defaultPersonaFolders ; $dataPersonas ; $files : Collection
1616 var $persona : Object
1717 var $i : Integer
1818 var $validated : Boolean
1919
2020 $lang := Get database localization:C1009 (Current localization:K5:22 ; * )
21+ $DBname := Folder:C1567 (fk database folder:K87:14 ; * ).name
22+
2123 $personas := []
2224
2325 $localizedPersonaFolders := []
2426 $defaultPersonaFolders := []
2527
2628 $localizedPersonaFolders .push (Folder:C1567 ("/RESOURCES/4DWP_AI/Personas/" + $lang )) // default
2729 $localizedPersonaFolders .push (Folder:C1567 ("/RESOURCES/4DWP_AI/Personas/" + $lang ; * )) // host resources
28- $localizedPersonaFolders .push (Folder:C1567 (Folder:C1567 (fk user preferences folder:K87:10 ).path + "4DWP_AI /Personas/"+ $lang ; fk posix path:K87:1 ))
30+ $localizedPersonaFolders .push (Folder:C1567 (Folder:C1567 (fk user preferences folder:K87:10 ).path + $DBname + " /Personas/"+ $lang ; fk posix path:K87:1 ))
2931
3032 $defaultPersonaFolders .push (Folder:C1567 ("/RESOURCES/4DWP_AI/Personas/en/" ))
3133 $defaultPersonaFolders .push (Folder:C1567 ("/RESOURCES/4DWP_AI/Personas/en/" ; * ))
32- $defaultPersonaFolders .push (Folder:C1567 (Folder:C1567 (fk user preferences folder:K87:10 ).path + "4DWP_AI /Personas/en" ; fk posix path:K87:1 ))
34+ $defaultPersonaFolders .push (Folder:C1567 (Folder:C1567 (fk user preferences folder:K87:10 ).path + $DBname + " /Personas/en" ; fk posix path:K87:1 ))
3335
3436 // local personas
3537 For ($i; 0; $localizedPersonaFolders .length - 1)
@@ -46,7 +48,7 @@ Function getPersonas()->$personas : Collection
4648 If ($validated)
4749 $persona := JSON Parse:C1218 ($file .getText ())
4850 $persona ._fileName := $file .fullName
49- $persona ._origin := Choose :C955 ( $i ; "Default" ; "Resources" ; "Single User" )
51+ $persona ._origin := $i // 0: "Default" 1: "Resources" 2:" User")
5052 $persona ._originIcon := This:C1470 ._originIcons [$i ]
5153 $personas .push ($persona )
5254 End if
@@ -58,7 +60,7 @@ Function getPersonas()->$personas : Collection
5860 // data (server) personas
5961 $dataPersonas := AI_GetPersonas ($lang ) // executed on server
6062 For each ($persona; $dataPersonas)
61- $persona ._origin := "All Users"
63+ $persona ._origin := 3 // data folder = "All Users"
6264 $persona ._originIcon := This:C1470 ._originIcons [3 ]
6365 End for each
6466 $personas .combine ($dataPersonas )
@@ -84,93 +86,92 @@ Function getPersona($id : Integer)->$persona : Object
8486 $persona := This:C1470 .personas [$id ]
8587 End if
8688
87-
88-
89- Function save ($persona : Object)
89+ Function save ($persona : Object; $saveWhere : Integer)
9090
9191 var $folder : 4D:C1709 .Folder
92- var $file : 4D:C1709 .File
93- var $lang ; $json : Text
92+ var $oldFile ; $newFile : 4D:C1709 .File
93+ var $lang ; $json ; $DBname : Text
9494
9595 $lang := Get database localization:C1009 (Current localization:K5:22 ; * )
9696
9797 Case of
98- : ($persona . _origin = "default" ) // must be saved in the 4DWP resources folder
98+ : ($saveWhere = 0 ) // must be saved in the 4DWP resources folder
9999
100100 $folder := Folder:C1567 ("/RESOURCES/4DWP_AI/Personas/" + $lang )
101- If ($folder .exists = False:C215)
102- $folder := Folder:C1567 ("/RESOURCES/4DWP_AI/Personas/en/" )
103- End if
104101
105- : ($persona . _origin = "resources" ) // must be saved in the host database resources
102+ : ($saveWhere = 1 ) // must be saved in the host database resources
106103
107104 $folder := Folder:C1567 ("/RESOURCES/4DWP_AI/Personas/" + $lang ; * )
108- If ($folder .exists = False:C215)
109- $folder := Folder:C1567 ("/RESOURCES/4DWP_AI/Personas/en/" ; * )
110- End if
111-
112105
113- : ($persona . _origin = "user" ) // must be saved in the user's folder
106+ : ($saveWhere = 2 ) // must be saved in the user's folder
114107
115- $folder := Folder:C1567 (Folder:C1567 (fk user preferences folder:K87:10 ).path + "4DWP_AI/Personas/" + $lang ; fk posix path:K87:1 )
116- If ($folder .exists = False:C215)
117- $folder := Folder:C1567 (Folder:C1567 (fk user preferences folder:K87:10 ).path + "4DWP_AI/Personas/en" ; fk posix path:K87:1 )
118- End if
108+ $DBname := Folder:C1567 (fk database folder:K87:14 ; * ).name
109+ $folder := Folder:C1567 (Folder:C1567 (fk user preferences folder:K87:10 ).path + $DBname + "/Personas/" + $lang ; fk posix path:K87:1 )
119110
120- : ($persona . _origin = "data" ) // must be saved in the data folder
111+ : ($saveWhere = 3 ) // must be saved in the data folder
121112
113+ // later
122114 End case
123115
124116
125117 If ($folder# Null:C1517)
126118
127- $file := File:C1566 ($folder .path + $persona .name + ".json" ; fk posix path:K87:1 )
119+ If ($folder .exists = False:C215)
120+ $folder .create ()
121+ End if
122+
123+ $oldFile := File:C1566 ($folder .platformPath + $persona ._fileName ; fk platform path:K87:2 )
124+ If ($oldFile .exists ) // true if folder has not changed, false otherwise
125+ $oldFile .delete ()
126+ End if
127+
128+ $newFile := File:C1566 ($folder .platformPath + $persona .name + ".json" ; fk platform path:K87:2 )
128129 OB REMOVE:C1226 ($persona ; "_origin" )
129130 OB REMOVE:C1226 ($persona ; "_originIcon" )
131+ OB REMOVE:C1226 ($persona ; "_fileName" )
130132
131133 $json := JSON Stringify:C1217 ($persona ; * )
132- $file .setText ($json )
134+ $newFile .setText ($json )
133135
134136 Else // data folder case
135137
136138 AI_SavePersona ($persona ; $lang )
137139
138140 End if
139141
140-
141-
142142Function delete ($persona : Object)
143143
144144 var $folder : 4D:C1709 .Folder
145145 var $file : 4D:C1709 .File
146- var $lang ; $json : Text
146+ var $lang ; $json ; $DBname : Text
147147
148148 $lang := Get database localization:C1009 (Current localization:K5:22 ; * )
149149
150150 Case of
151- : ($persona ._origin = "default" ) // must be saved in the 4DWP resources folder
151+ : ($persona ._origin = 0 ) // must be saved in the 4DWP resources folder
152152
153153 $folder := Folder:C1567 ("/RESOURCES/4DWP_AI/Personas/" + $lang )
154154 If ($folder .exists = False:C215)
155155 $folder := Folder:C1567 ("/RESOURCES/4DWP_AI/Personas/en/" )
156156 End if
157157
158- : ($persona ._origin = "resources" ) // must be saved in the host database resources
158+ : ($persona ._origin = 1 ) // must be saved in the host database resources
159159
160160 $folder := Folder:C1567 ("/RESOURCES/4DWP_AI/Personas/" + $lang ; * )
161161 If ($folder .exists = False:C215)
162162 $folder := Folder:C1567 ("/RESOURCES/4DWP_AI/Personas/en/" ; * )
163163 End if
164164
165165
166- : ($persona ._origin = "user" ) // must be saved in the user's folder
166+ : ($persona ._origin = 2 ) // must be saved in the user's folder
167167
168- $folder := Folder:C1567 (Folder:C1567 (fk user preferences folder:K87:10 ).path + "4DWP_AI/Personas/" + $lang ; fk posix path:K87:1 )
168+ $DBname := Folder:C1567 (fk database folder:K87:14 ; * ).name
169+ $folder := Folder:C1567 (Folder:C1567 (fk user preferences folder:K87:10 ).path + $DBname + "/Personas/" + $lang ; fk posix path:K87:1 )
169170 If ($folder .exists = False:C215)
170- $folder := Folder:C1567 (Folder:C1567 (fk user preferences folder:K87:10 ).path + "4DWP_AI /Personas/en" ; fk posix path:K87:1 )
171+ $folder := Folder:C1567 (Folder:C1567 (fk user preferences folder:K87:10 ).path + $DBname + " /Personas/en" ; fk posix path:K87:1 )
171172 End if
172173
173- : ($persona ._origin = "data" ) // must be saved in the data folder
174+ : ($persona ._origin = 3 ) // must be saved in the data folder
174175
175176 End case
176177
@@ -185,7 +186,7 @@ Function delete($persona : Object)
185186
186187 Else // data folder case
187188
188- AI_SavePersona ($persona ; $lang )
189+ AI_DeletePersona ($persona ; $lang )
189190
190191 End if
191192
0 commit comments