summaryrefslogtreecommitdiff
path: root/scripts/admin.pl
blob: a9e1117732d041ea4175589800aa0570d77a6fe2 (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. if ($request->type() eq 'POST') {
  61. $admin->save_user();
  62. $admin->save_roles();
  63. $template->render(
  64. {
  65. user=>$admin->get_entire_user(),
  66. roles=>$all_roles,
  67. user_roles=>$admin->get_user_roles($request->{username}),
  68. salutations=>$admin->get_salutations(),
  69. locations=>$location->get_all($u_id,"person"),
  70. countries=>$admin->get_countries(),
  71. }
  72. );
  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. print STDERR Dumper($admin->get_salutations());
  83. $template->render(
  84. {
  85. user=>$user,
  86. roles=>@all_roles,
  87. user_roles=>$user->{roles},
  88. salutations=>$admin->get_salutations(),
  89. location=>$loc,
  90. locations=>$location->get_all($u_id,"person"),
  91. countries=>$admin->get_countries(),
  92. }
  93. );
  94. }
  95. }
  96. sub edit_group {
  97. my ($request) = @_;
  98. my $admin = LedgerSMB::DBObject::Admin->new(base=>$request, copy=>'all');
  99. my $all_roles = $admin->role_list();
  100. my $template = LedgerSMB::Template->new(
  101. user => $user,
  102. template => 'Admin/edit_group',
  103. language => $user->{language},
  104. format => 'HTML',
  105. path=>'UI'
  106. );
  107. if ($request->type() eq "POST") {
  108. my $role = $admin->save_role();
  109. return $template->render(
  110. {
  111. user=> $request->{role},
  112. roles=>$all_roles,
  113. user_roles=>$admin->get_user_roles($request->{role})
  114. }
  115. );
  116. }
  117. else {
  118. return $template->render(
  119. {
  120. roles=>$all_roles
  121. }
  122. );
  123. }
  124. }
  125. sub create_group {
  126. my ($request) = @_;
  127. my $admin = LedgerSMB::DBObject::Admin->new(base=>$request, copy=>'all');
  128. my $all_roles = $admin->get_roles();
  129. my $template = LedgerSMB::Template->new(
  130. user => $user,
  131. template => 'Admin/edit_group',
  132. language => $user->{language},
  133. format => 'HTML',
  134. path=>'UI'
  135. );
  136. if ($request->type() eq "POST") {
  137. my $role = $admin->save_role();
  138. return $template->render(
  139. {
  140. user=> $role, roles=>$all_roles
  141. }
  142. );
  143. }
  144. else {
  145. return $template->render({roles=>$all_roles});
  146. }
  147. }
  148. sub delete_group {
  149. my ($request) = @_;
  150. my $admin = LedgerSMB::DBObject::Admin->new(base=>$request, copy=>'all');
  151. # requires the field modifying_user to be set.
  152. my $status = $admin->delete_group($request->{modifying_user});
  153. # status can either be 1, or an error.
  154. # if there's an error, $status->throw() is called by admin.pm. Or possibly
  155. # in the template itself.
  156. my $template = LedgerSMB::Template->new ( user=>$user,
  157. template=>'Admin/delete_group', language=>$user->{language},
  158. format=>'HTML', path=>'UI');
  159. $template->render($status);
  160. }
  161. sub delete_user {
  162. my ($request) = @_;
  163. my $admin = LedgerSMB::DBObject::Admin->new(base=>$request, copy=>'all');
  164. # requires the field modifying_user to be set.
  165. my $status = $admin->delete_user($request->{modifying_user});
  166. # status can either be 1, or an error.
  167. # if there's an error, $status->throw() is called by admin.pm. Or possibly
  168. # in the template itself.
  169. my $template = LedgerSMB::Template->new ( user=>$user,
  170. template=>'Admin/delete_user', language=>$user->{language},
  171. format=>'HTML', path=>'UI');
  172. $template->render($status);
  173. }
  174. sub new_group {
  175. my ($request) = @_;
  176. my $template = LedgerSMB::Template->new( user=>$user,
  177. template=>'Admin/new_group', language=>$user->{language},
  178. format=>'HTML', path=>'UI');
  179. $template->render();
  180. }
  181. sub cancel {
  182. &main(@_);
  183. }
  184. sub __default {
  185. &main(@_);
  186. }
  187. sub main {
  188. my ($request) = @_;
  189. my $template;
  190. my $user = LedgerSMB::DBObject::User->new(base=>$request, copy=>'all');
  191. my $ret = $user->get_all_users();
  192. $template = LedgerSMB::Template->new(
  193. user=>$user,
  194. template=>'Admin/main',
  195. language=>$user->{language},
  196. format=>'HTML',
  197. path=>'UI'
  198. );
  199. $template->render( { users=>$user->{users} } );
  200. }
  201. sub edit_contact {
  202. my $request = shift @_;
  203. # Only ever a post, but check anyway
  204. if ($request->type eq "POST") {
  205. # We have a contact ID, ie, something we made up.
  206. my $c_id = $request->{contact_id};
  207. my $u_id = $request->{user_id};
  208. my $user = LedgerSMB::DBObject::User->new(base=>$request, copy=>'user_id');
  209. $user->get($u_id);
  210. # so we have a user object.
  211. # ->{contacts} is an arrayref to the list of contacts this user has
  212. # $request->{contact_id} is a reference to this structure.
  213. }
  214. }
  215. sub delete_contact {
  216. my $request = shift @_;
  217. # Only ever a post, but check anyway
  218. if ($request->type eq "POST") {
  219. # We have a contact ID, ie, something we made up.
  220. my $c_id = $request->{contact_id};
  221. my $u_id = $request->{user_id};
  222. my $user = LedgerSMB::DBObject::User->new(base=>$request, copy=>'user_id');
  223. $user->get($u_id);
  224. # so we have a user object.
  225. # ->{contacts} is an arrayref to the list of contacts this user has
  226. # $request->{contact_id} is a reference to this structure.
  227. $user->delete_contact($c_id);
  228. # Boom. Done.
  229. # Now, just call the main edit user page.
  230. edit_user($request);
  231. }
  232. }
  233. sub new_contact {
  234. my $request = shift @_;
  235. }
  236. sub save_location {
  237. my $request = shift @_;
  238. # Only ever a post, but check anyway
  239. if ($request->type eq "POST") {
  240. my $u_id = $request->{user_id}; # this is an entity_id
  241. my $location = LedgerSMB::DBObject::Location->new(base=>$request, copy=>'all');
  242. # So there's a pile of stuff we need.
  243. # lineone
  244. # linetwo
  245. # linethree
  246. # city
  247. # state
  248. # zipcode
  249. # country
  250. print STDERR "Attempting to save location...\n";
  251. my $id = $location->save("person");
  252. # Done and done.
  253. my $admin = LedgerSMB::DBObject::Admin->new(base=>$request, copy=>'user_id');
  254. my $user = LedgerSMB::DBObject::User->new(base=>$request, copy=>'user_id');
  255. $user->get($request->{user_id});
  256. my @all_roles = $admin->get_roles();
  257. my $template = LedgerSMB::Template->new(
  258. user => $user,
  259. template => 'Admin/edit_user',
  260. language => $user->{language},
  261. format => 'HTML',
  262. path=>'UI'
  263. );
  264. $template->render(
  265. {
  266. user=>$user,
  267. roles=>@all_roles,
  268. user_roles=>$user->{roles},
  269. salutations=>$admin->get_salutations(),
  270. locations=>$location->get_all($u_id,"person"),
  271. location=>$location->get($id),
  272. countries=>$admin->get_countries(),
  273. }
  274. );
  275. }
  276. }
  277. sub delete_location {
  278. my $request = shift @_;
  279. # Only ever a post, but check anyway
  280. if ($request->type eq "POST") {
  281. my $l_id = $request->{location_id};
  282. my $u_id = $request->{user_id};
  283. my $location = LedgerSMB::DBObject::Location->new(base=>$request, copy=>"location_id");
  284. $location->person_delete($l_id,$u_id);
  285. # Boom. Done.
  286. # Now, just call the main edit user page.
  287. edit_user($request);
  288. }
  289. }
  290. #eval { do "scripts/custom/admin.pl"};
  291. 1;