Пример #1
0
 public function index($pid, $fid)
 {
     if (!FormController::validProjForm($pid, $fid)) {
         return redirect('projects');
     }
     $form = FormController::getForm($fid);
     if (!\Auth::user()->isFormAdmin($form)) {
         flash()->overlay('You do not have permission to view that page.', 'Whoops.');
         return redirect('projects');
     }
     $presets = RecordPreset::where('fid', '=', $fid)->get();
     return view('recordPresets/index', compact('form', 'presets'));
 }
Пример #2
0
 /**
  * Creates a form group.
  *
  * @param Request $request
  * @return Response
  */
 public function create(Request $request)
 {
     $fid = $request['form'];
     $form = FormController::getForm($fid);
     $project = $form->project()->first();
     $pid = $project->pid;
     if ($request['name'] == "") {
         flash()->overlay('You must enter a group name.', 'Whoops.');
         return redirect(action('FormGroupController@index', ['fid' => $form->fid]));
     }
     $group = FormGroupController::buildGroup($form->fid, $request);
     if (!is_null($request['users'])) {
         $group->users()->attach($request['users']);
     }
     flash()->overlay('Group created!', 'Success');
     return redirect(action('FormGroupController@index', ['fid' => $form->fid]));
 }
Пример #3
0
 /**
  * Display a listing of the resource.
  *
  * @return Response
  */
 public function index(Request $request)
 {
     //These functions deal with field nav
     $field = \App\Http\Controllers\FieldController::getField($request->flid);
     $form = \App\Http\Controllers\FormController::getForm($field->fid);
     $vals = FormController::xmlToArray($form->layout);
     if ($request->action == 'moveFieldUp') {
         for ($i = 0; $i < sizeof($vals); $i++) {
             if (isset($vals[$i]['value']) && $vals[$i]['value'] == $field->flid) {
                 //if we have a field above us
                 if ($vals[$i - 1]['tag'] == 'ID') {
                     $temp = $vals[$i];
                     $vals[$i] = $vals[$i - 1];
                     $vals[$i - 1] = $temp;
                 }
                 //if we have a node above us
                 if ($vals[$i - 1]['tag'] == 'NODE' && $vals[$i - 1]['type'] == 'close') {
                     $j = $i - 1;
                     $lvl = $vals[$i - 1]['level'];
                     while ($j > 0) {
                         if ($vals[$j]['tag'] == 'NODE' && $vals[$j]['type'] == 'open' && $vals[$j]['level'] == $lvl) {
                             $k = $j;
                             //this is the start of the node
                             break;
                         } else {
                             $j--;
                         }
                     }
                     $temp = $vals[$i];
                     while ($i > $k) {
                         $vals[$i] = $vals[$i - 1];
                         $i--;
                     }
                     $vals[$i] = $temp;
                 }
                 $form->layout = $this->valsToXML($vals);
                 $form->save();
                 break;
             }
         }
     }
     if ($request->action == 'moveFieldDown') {
         for ($i = 0; $i < sizeof($vals); $i++) {
             if (isset($vals[$i]['value']) && $vals[$i]['value'] == $field->flid) {
                 //if we have a field below us
                 if ($vals[$i + 1]['tag'] == 'ID') {
                     $temp = $vals[$i];
                     $vals[$i] = $vals[$i + 1];
                     $vals[$i + 1] = $temp;
                 }
                 //if we have a node below us
                 if ($vals[$i + 1]['tag'] == 'NODE' && $vals[$i + 1]['type'] == 'open') {
                     $j = $i + 1;
                     $lvl = $vals[$i + 1]['level'];
                     while ($j < sizeof($vals)) {
                         if ($vals[$j]['tag'] == 'NODE' && $vals[$j]['type'] == 'close' && $vals[$j]['level'] == $lvl) {
                             $k = $j;
                             //this is the start of the node
                             break;
                         } else {
                             $j++;
                         }
                     }
                     $temp = $vals[$i];
                     while ($i < $k) {
                         $vals[$i] = $vals[$i + 1];
                         $i++;
                     }
                     $vals[$i] = $temp;
                 }
                 $form->layout = $this->valsToXML($vals);
                 $form->save();
                 break;
             }
         }
     }
     if ($request->action == 'moveFieldUpIn') {
         for ($i = 0; $i < sizeof($vals); $i++) {
             if (isset($vals[$i]['value']) && $vals[$i]['value'] == $field->flid) {
                 //if the Node is above us
                 if ($vals[$i - 1]['tag'] == 'NODE' && $vals[$i - 1]['type'] == 'close') {
                     $tmp = $vals[$i];
                     $vals[$i] = $vals[$i - 1];
                     $vals[$i - 1] = $tmp;
                 }
                 $form->layout = $this->valsToXML($vals);
                 $form->save();
                 break;
             }
         }
     }
     if ($request->action == 'moveFieldDownIn') {
         for ($i = 0; $i < sizeof($vals); $i++) {
             if (isset($vals[$i]['value']) && $vals[$i]['value'] == $field->flid) {
                 //if the Node is above us
                 if ($vals[$i + 1]['tag'] == 'NODE' && $vals[$i + 1]['type'] == 'open') {
                     $tmp = $vals[$i];
                     $vals[$i] = $vals[$i + 1];
                     $vals[$i + 1] = $tmp;
                 }
                 $form->layout = $this->valsToXML($vals);
                 $form->save();
                 break;
             }
         }
     }
     if ($request->action == 'moveFieldUpOut') {
         for ($i = 0; $i < sizeof($vals); $i++) {
             if (isset($vals[$i]['value']) && $vals[$i]['value'] == $field->flid) {
                 //if we have a node above us
                 $j = $i - 1;
                 $lvl = $vals[$i]['level'] - 1;
                 while ($j > 0) {
                     if ($vals[$j]['tag'] == 'NODE' && $vals[$j]['type'] == 'open' && $vals[$j]['level'] == $lvl) {
                         $k = $j;
                         break;
                     } else {
                         $j--;
                     }
                 }
                 $temp = $vals[$i];
                 while ($i > $k) {
                     $vals[$i] = $vals[$i - 1];
                     $i--;
                 }
                 $vals[$i] = $temp;
                 $form->layout = $this->valsToXML($vals);
                 $form->save();
                 break;
             }
         }
     }
     if ($request->action == 'moveFieldDownOut') {
         for ($i = 0; $i < sizeof($vals); $i++) {
             if (isset($vals[$i]['value']) && $vals[$i]['value'] == $field->flid) {
                 //if we have a node below us
                 $j = $i + 1;
                 $lvl = $vals[$i]['level'] - 1;
                 while ($j < sizeof($vals)) {
                     if ($vals[$j]['tag'] == 'NODE' && $vals[$j]['type'] == 'close' && $vals[$j]['level'] == $lvl) {
                         $k = $j;
                         break;
                     } else {
                         $j++;
                     }
                 }
                 $temp = $vals[$i];
                 while ($i < $k) {
                     $vals[$i] = $vals[$i + 1];
                     $i++;
                 }
                 $vals[$i] = $temp;
                 $form->layout = $this->valsToXML($vals);
                 $form->save();
                 break;
             }
         }
     }
 }
Пример #4
0
 /**
  *
  * Display a view for mass assigning a value to many records at once
  *
  * @param $pid
  * @param $fid
  * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector|\Illuminate\View\View
  */
 public function showMassAssignmentView($pid, $fid)
 {
     if (!$this->checkPermissions($fid, 'modify')) {
         return redirect()->back();
     }
     $form = FormController::getForm($fid);
     $fields = $form->fields()->get();
     return view('records.mass-assignment', compact('form', 'fields', 'pid', 'fid'));
 }
Пример #5
0
 /**
  * Validate that a form belongs to the project in use.
  *
  * @param $pid
  * @param $fid
  * @return bool
  */
 public static function validProjForm($pid, $fid)
 {
     $form = FormController::getForm($fid);
     $proj = ProjectController::getProject($pid);
     if (is_null($form) || is_null($proj)) {
         return false;
     } else {
         if ($proj->pid == $form->pid) {
             return true;
         } else {
             return false;
         }
     }
 }
Пример #6
0
 /**
  * Rolls back a record.
  *
  * @param Request $request
  */
 public function rollback(Request $request)
 {
     $revision = Revision::where('id', '=', $request['revision'])->first();
     $form = FormController::getForm($revision->fid);
     if ($revision->type == 'create') {
         $record = Record::where('rid', '=', $revision->rid)->first();
         $revision = RevisionController::storeRevision($record->rid, 'delete');
         $record->delete();
         flash()->overlay('Record ' . $form->pid . '-' . $form->fid . '-' . $revision->rid . ' has been deleted.', 'Success!');
     } elseif ($revision->type == 'delete') {
         if (RecordController::exists($revision->rid)) {
             flash()->overlay('Cannot recreate a record that already exists.');
         } else {
             $record = new Record();
             $record->rid = $revision->rid;
             $record->fid = $revision->fid;
             $record->pid = $form->pid;
             $record->owner = $revision->owner;
             $record->save();
             $record->kid = $record->pid . '-' . $record->fid . '-' . $record->rid;
             $record->save();
             RevisionController::redo($record, $form, $revision, false);
             RevisionController::storeRevision($record->rid, 'create');
             flash()->overlay('Record ' . $form->pid . '-' . $form->fid . '-' . $record->rid . ' has been rolled back.', 'Success!');
         }
     } else {
         $record = RecordController::getRecord($revision->rid);
         RevisionController::redo($record, $form, $revision, true);
         flash()->overlay('Record ' . $form->pid . '-' . $form->fid . '-' . $record->rid . ' has been rolled back.', 'Success!');
     }
 }
Пример #7
0
 private function checkPermissions($fid, $permission = '')
 {
     switch ($permission) {
         case 'create':
             if (!\Auth::user()->canCreateFields(FormController::getForm($fid))) {
                 flash()->overlay('You do not have permission to create fields for that form.', 'Whoops.');
                 return false;
             }
             return true;
         case 'edit':
             if (!\Auth::user()->canEditFields(FormController::getForm($fid))) {
                 flash()->overlay('You do not have permission to edit fields for that form.', 'Whoops.');
                 return false;
             }
             return true;
         case 'delete':
             if (!\Auth::user()->canDeleteFields(FormController::getForm($fid))) {
                 flash()->overlay('You do not have permission to delete fields for that form.', 'Whoops.');
                 return false;
             }
             return true;
         default:
             if (!\Auth::user()->inAFormGroup(FormController::getForm($fid))) {
                 flash()->overlay('You do not have permission to view that field.', 'Whoops.');
                 return false;
             }
             return true;
     }
 }