@@ -89,42 +89,23 @@ public function new(array $params): void
8989 }
9090
9191 /**
92- * Languages index page - handles all language operations .
92+ * Edit language form .
9393 *
94- * Routes based on request parameters:
95- * - chg=[id]: Show edit form for language
96- * - del=[id]: Delete language
97- * - refresh=[id]: Reparse texts for language
98- * - op=Save: Create new language
99- * - op=Change: Update existing language
100- * - (default): Show language list
94+ * Route: GET/POST /languages/{id}/edit
10195 *
102- * @param array $params Route parameters
96+ * @param int $id Language ID from route parameter
10397 *
10498 * @return void
10599 */
106- public function index ( array $ params ): void
100+ public function edit ( int $ id ): void
107101 {
108102 PageLayoutHelper::renderPageStart ('Languages ' , true );
109103
110104 $ message = '' ;
111105
112- // Handle actions
113- $ refreshId = $ this ->paramInt ('refresh ' );
114- if ($ refreshId !== null ) {
115- $ result = $ this ->languageFacade ->refresh ($ refreshId );
116- $ message = "Sentences deleted: {$ result ['sentencesDeleted ' ]} / " .
117- "Text items deleted: {$ result ['textItemsDeleted ' ]} / " .
118- "Sentences added: {$ result ['sentencesAdded ' ]} / " .
119- "Text items added: {$ result ['textItemsAdded ' ]}" ;
120- }
121-
122- $ delId = $ this ->paramInt ('del ' );
106+ // Handle update operation
123107 $ op = $ this ->param ('op ' );
124- if ($ delId !== null ) {
125- $ result = $ this ->languageFacade ->delete ($ delId );
126- $ message = $ result ['error ' ] ?? "Deleted: {$ result ['count ' ]}" ;
127- } elseif ($ op === 'Change ' ) {
108+ if ($ op === 'Change ' ) {
128109 $ lgId = $ this ->paramInt ('LgID ' , 0 ) ?? 0 ;
129110 $ result = $ this ->languageFacade ->update ($ lgId );
130111 if ($ result ['error ' ] !== null ) {
@@ -134,14 +115,83 @@ public function index(array $params): void
134115 } else {
135116 $ message = "Updated: 1 / Reparsing not needed " ;
136117 }
118+ // After successful update, redirect to languages list
119+ if ($ result ['error ' ] === null ) {
120+ header ('Location: ' . url ('/languages ' ));
121+ exit ;
122+ }
137123 }
138124
139- // Display appropriate view
140- if ($ this ->hasParam ('chg ' )) {
141- $ this ->showEditForm ($ this ->paramInt ('chg ' , 0 ) ?? 0 );
125+ $ this ->showEditForm ($ id );
126+
127+ PageLayoutHelper::renderPageEnd ();
128+ }
129+
130+ /**
131+ * Delete a language.
132+ *
133+ * Route: DELETE /languages/{id}
134+ *
135+ * @param int $id Language ID from route parameter
136+ *
137+ * @return void
138+ */
139+ public function delete (int $ id ): void
140+ {
141+ $ result = $ this ->languageFacade ->delete ($ id );
142+ $ error = $ result ['error ' ];
143+
144+ if ($ error !== null ) {
145+ // Error - redirect back with error message
146+ header ('Location: ' . url ('/languages ' ) . '?error= ' . urlencode ($ error ));
142147 } else {
143- $ this ->showList ($ message );
148+ // Success - redirect to languages list
149+ header ('Location: ' . url ('/languages ' ));
144150 }
151+ exit ;
152+ }
153+
154+ /**
155+ * Refresh (reparse) all texts for a language.
156+ *
157+ * Route: POST /languages/{id}/refresh
158+ *
159+ * @param int $id Language ID from route parameter
160+ *
161+ * @return void
162+ */
163+ public function refresh (int $ id ): void
164+ {
165+ $ result = $ this ->languageFacade ->refresh ($ id );
166+
167+ $ message = "Sentences deleted: {$ result ['sentencesDeleted ' ]} / " .
168+ "Text items deleted: {$ result ['textItemsDeleted ' ]} / " .
169+ "Sentences added: {$ result ['sentencesAdded ' ]} / " .
170+ "Text items added: {$ result ['textItemsAdded ' ]}" ;
171+
172+ // Redirect to languages list with message
173+ header ('Location: ' . url ('/languages ' ) . '?message= ' . urlencode ($ message ));
174+ exit ;
175+ }
176+
177+ /**
178+ * Languages index page - shows language list.
179+ *
180+ * Route: GET /languages
181+ *
182+ * @param array $params Route parameters
183+ *
184+ * @return void
185+ */
186+ public function index (array $ params ): void
187+ {
188+ PageLayoutHelper::renderPageStart ('Languages ' , true );
189+
190+ // Check for message from redirect (e.g., after refresh/delete)
191+ $ message = $ this ->hasParam ('message ' ) ? $ this ->param ('message ' ) :
192+ ($ this ->hasParam ('error ' ) ? $ this ->param ('error ' ) : '' );
193+
194+ $ this ->showList ($ message );
145195
146196 PageLayoutHelper::renderPageEnd ();
147197 }
0 commit comments