summaryrefslogtreecommitdiff
path: root/scripts/admin.pl
blob: 9a09f40f6a7081d3d89047a56fa5945b11de2007 (plain)
  1. #!/usr/bin/perl
  2. package LedgerSMB::Scripts::admin;
  3. require 'lsmb-request.pl';
  4. use LedgerSMB::Template;
  5. use LedgerSMB::DBObject::Admin;
  6. use LedgerSMB::DBObject::User;
  7. use LedgerSMB::DBObject::Location;
  8. use Data::Dumper;
  9. sub new_user {
  10. # uses the same page as create_user, only pre-populated.
  11. #my ($request) = @_;
  12. my $request = shift @_;
  13. my $admin = LedgerSMB::DBObject::Admin->new(base=>$request, copy=>'all');
  14. my $sal = $admin->get_salutations();
  15. my $groups = $admin->get_roles();
  16. if ($request->type() eq 'POST') {
  17. # do the save stuff
  18. my $entity = $admin->save_new_user();
  19. my $template = LedgerSMB::Template->new( user => $user,
  20. template => 'Admin/edit_user', language => $user->{ language },
  21. format => 'HTML', path=>'UI');
  22. $template->render(
  23. {
  24. user=>$entity,
  25. salutations=>$sal,
  26. roles=>$groups
  27. }
  28. );
  29. } else {
  30. my $template = LedgerSMB::Template->new(
  31. user => $user,
  32. template => 'Admin/edit_user',
  33. language => $user->{language},
  34. format => 'HTML',
  35. path=>'UI'
  36. );
  37. $template->render(
  38. {
  39. salutations=>$sal,
  40. roles=>$groups,
  41. countries=>$admin->get_countries(),
  42. }
  43. );
  44. }
  45. }
  46. sub edit_user {
  47. # uses the same page as create_user, only pre-populated.
  48. my ($request) = @_;
  49. my $admin = LedgerSMB::DBObject::Admin->new(base=>$request, copy=>'user_id');
  50. my $user = LedgerSMB::DBObject::User->new(base=>$request, copy=>'user_id');
  51. $user->get($request->{user_id});
  52. my @all_roles = $admin->get_roles();
  53. my $template = LedgerSMB::Template->new(
  54. user => $user,
  55. template => 'Admin/edit_user',
  56. language => $user->{language},
  57. format => 'HTML',
  58. path=>'UI'
  59. );
  60. my $template_data =
  61. {
  62. user=>$user,
  63. roles=>@all_roles,
  64. countries=>$admin->get_countries(),
  65. user_roles=>$user->{roles},
  66. salutations=>$admin->get_salutations(),
  67. locations=>$location->get_all($u_id,"person"),
  68. };
  69. if ($request->type() eq 'POST') {
  70. $admin->save_user();
  71. $admin->save_roles();
  72. $template->render($test_data);
  73. }
  74. else {
  75. # print STDERR Dumper($user);
  76. # print STDERR Dumper(@all_roles);
  77. my $loc;
  78. my $location = LedgerSMB::DBObject::Location->new(base=>$request);
  79. if ($request->{location_id}) {
  80. $loc = $location->get($request->{location_id});
  81. }
  82. $template->render($template_data);
  83. }
  84. }
  85. sub edit_group {
  86. my ($request) = @_;
  87. my $admin = LedgerSMB::DBObject::Admin->new(base=>$request, copy=>'all');
  88. my $all_roles = $admin->role_list();
  89. my $template = LedgerSMB::Template->new(
  90. user => $user,
  91. template => 'Admin/edit_group',
  92. language => $user->{language},
  93. format => 'HTML',
  94. path=>'UI'
  95. );
  96. if ($request->type() eq "POST") {
  97. my $role = $admin->save_role();
  98. return $template->render(
  99. {
  100. user=> $request->{role},
  101. roles=>$all_roles,
  102. user_roles=>$admin->get_user_roles($request->{role})
  103. }
  104. );
  105. }
  106. else {
  107. return $template->render(
  108. {
  109. roles=>$all_roles
  110. }
  111. );
  112. }
  113. }
  114. sub create_group {
  115. my ($request) = @_;
  116. my $admin = LedgerSMB::DBObject::Admin->new(base=>$request, copy=>'all');
  117. my $all_roles = $admin->get_roles();
  118. my $template = LedgerSMB::Template->new(
  119. user => $user,
  120. template => 'Admin/edit_group',
  121. language => $user->{language},
  122. format => 'HTML',
  123. path=>'UI'
  124. );
  125. if ($request->type() eq "POST") {
  126. my $role = $admin->save_role();
  127. return $template->render(
  128. {
  129. user=> $role, roles=>$all_roles
  130. }
  131. );
  132. }
  133. else {
  134. return $template->render({roles=>$all_roles});
  135. }
  136. }
  137. sub delete_group {
  138. my ($request) = @_;
  139. my $admin = LedgerSMB::DBObject::Admin->new(base=>$request, copy=>'all');
  140. # requires the field modifying_user to be set.
  141. my $status = $admin->delete_group($request->{modifying_user});
  142. # status can either be 1, or an error.
  143. # if there's an error, $status->throw() is called by admin.pm. Or possibly
  144. # in the template itself.
  145. my $template = LedgerSMB::Template->new ( user=>$user,
  146. template=>'Admin/delete_group', language=>$user->{language},
  147. format=>'HTML', path=>'UI');
  148. $template->render($status);
  149. }
  150. sub delete_user {
  151. my ($request) = @_;
  152. my $admin = LedgerSMB::DBObject::Admin->new(base=>$request, copy=>'all');
  153. # requires the field modifying_user to be set.
  154. my $status = $admin->delete_user($request->{modifying_user});
  155. # status can either be 1, or an error.
  156. # if there's an error, $status->throw() is called by admin.pm. Or possibly
  157. # in the template itself.
  158. my $template = LedgerSMB::Template->new ( user=>$user,
  159. template=>'Admin/delete_user', language=>$user->{language},
  160. format=>'HTML', path=>'UI');
  161. $template->render($status);
  162. }
  163. sub new_group {
  164. my ($request) = @_;
  165. my $template = LedgerSMB::Template->new( user=>$user,
  166. template=>'Admin/new_group', language=>$user->{language},
  167. format=>'HTML', path=>'UI');
  168. $template->render();
  169. }
  170. sub cancel {
  171. &main(@_);
  172. }
  173. sub __default {
  174. &main(@_);
  175. }
  176. sub main {
  177. my ($request) = @_;
  178. my $template;
  179. my $user = LedgerSMB::DBObject::User->new(base=>$request, copy=>'all');
  180. my $ret = $user->get_all_users();
  181. $template = LedgerSMB::Template->new(
  182. user=>$user,
  183. template=>'Admin/main',
  184. language=>$user->{language},
  185. format=>'HTML',
  186. path=>'UI'
  187. );
  188. $template->render( { users=>$user->{users} } );
  189. }
  190. sub edit_contact {
  191. my $request = shift @_;
  192. # Only ever a post, but check anyway
  193. if ($request->type eq "POST") {
  194. # We have a contact ID, ie, something we made up.
  195. my $c_id = $request->{contact_id};
  196. my $u_id = $request->{user_id};
  197. my $user = LedgerSMB::DBObject::User->new(base=>$request, copy=>'user_id');
  198. $user->get($u_id);
  199. # so we have a user object.
  200. # ->{contacts} is an arrayref to the list of contacts this user has
  201. # $request->{contact_id} is a reference to this structure.
  202. }
  203. }
  204. sub delete_contact {
  205. my $request = shift @_;
  206. # Only ever a post, but check anyway
  207. if ($request->type eq "POST") {
  208. # We have a contact ID, ie, something we made up.
  209. my $c_id = $request->{contact_id};
  210. my $u_id = $request->{user_id};
  211. my $user = LedgerSMB::DBObject::User->new(base=>$request, copy=>'user_id');
  212. $user->get($u_id);
  213. # so we have a user object.
  214. # ->{contacts} is an arrayref to the list of contacts this user has
  215. # $request->{contact_id} is a reference to this structure.
  216. $user->delete_contact($c_id);
  217. # Boom. Done.
  218. # Now, just call the main edit user page.
  219. edit_user($request);
  220. }
  221. }
  222. sub new_contact {
  223. my $request = shift @_;
  224. }
  225. sub save_location {
  226. my $request = shift @_;
  227. # Only ever a post, but check anyway
  228. if ($request->type eq "POST") {
  229. my $u_id = $request->{user_id}; # this is an entity_id
  230. my $location = LedgerSMB::DBObject::Location->new(base=>$request, copy=>'all');
  231. # So there's a pile of stuff we need.
  232. # lineone
  233. # linetwo
  234. # linethree
  235. # city
  236. # state
  237. # zipcode
  238. # country
  239. print STDERR "Attempting to save location...\n";
  240. my $id = $location->save("person");
  241. # Done and done.
  242. my $admin = LedgerSMB::DBObject::Admin->new(base=>$request, copy=>'user_id');
  243. my $user = LedgerSMB::DBObject::User->new(base=>$request, copy=>'user_id');
  244. $user->get($request->{user_id});
  245. my @all_roles = $admin->get_roles();
  246. my $template = LedgerSMB::Template->new(
  247. user => $user,
  248. template => 'Admin/edit_user',
  249. language => $user->{language},
  250. format => 'HTML',
  251. path=>'UI'
  252. );
  253. $template->render(
  254. {
  255. user=>$user,
  256. roles=>@all_roles,
  257. user_roles=>$user->{roles},
  258. salutations=>$admin->get_salutations(),
  259. locations=>$location->get_all($u_id,"person"),
  260. location=>$location->get($id),
  261. countries=>$admin->get_countries(),
  262. }
  263. );
  264. }
  265. }
  266. sub delete_location {
  267. my $request = shift @_;
  268. # Only ever a post, but check anyway
  269. if ($request->type eq "POST") {
  270. my $l_id = $request->{location_id};
  271. my $u_id = $request->{user_id};
  272. my $location = LedgerSMB::DBObject::Location->new(base=>$request, copy=>"location_id");
  273. $location->person_delete($l_id,$u_id);
  274. # Boom. Done.
  275. # Now, just call the main edit user page.
  276. edit_user($request);
  277. }
  278. }
  279. #eval { do "scripts/custom/admin.pl"};
  280. 1;