Пример #1
0
 function formulize_setupPreviousEntryUI($screen, $element_id, $type, $owner, $de = false, $entryId = "", $ele_handle, $fid)
 {
     // 1. need to get and cache the values of the entry for this screen
     // 2. need to put the values into a dropdown list with an onchange event that populates the actual form element
     // this should be cached in some other way, since every instance of the renderer will need to cache this.  If it were a GLOBAL or this whole thing were in some other function, that would work.
     static $cachedEntries = array();
     if (!isset($cachedEntries[$screen->getVar('sid')])) {
         // identify the entry belonging to this user's group(s) in the other form.  Currently only group correspondence is supported.
         global $xoopsUser;
         $groups = $xoopsUser ? $xoopsUser->getGroups() : array(0 => XOOPS_GROUP_ANONYMOUS);
         $member_handler =& xoops_gethandler('member');
         $gperm_handler =& xoops_gethandler('groupperm');
         $mid = getFormulizeModId();
         $owner_groups =& $member_handler->getGroupsByUser($owner, FALSE);
         // in this particular case, it's okay to make the owner_groups based on the users's memberships, since we want to present the single entry that belongs to whichever groups the user is a member of...I think.  :-)
         $singleData = getSingle($screen->getVar('paraentryform'), $owner, $owner_groups, $member_handler, $gperm_handler, $mid);
         if ($singleData['flag'] == "group" and $singleData['entry'] > 0) {
             // only proceed if there is a one-entry-per-group situation in the target form
             formulize_benchmark("Ready to do previous entry query.");
             $cachedEntries[$screen->getVar('sid')] = getData("", $screen->getVar('paraentryform'), $singleData['entry']);
             formulize_benchmark("Done query.");
         } else {
             return "";
         }
     }
     $entries = $cachedEntries[$screen->getVar('sid')];
     // big assumption below is corresponding captions.  In future there will be more ad hoc ways of describing which elements align to which other ones.
     // 1. figure out the corresponding element ID based on matching captions
     // 2. grab the previous value from the $entry/entries
     // 3. create the dropdown list with these values, including javascript
     $formHandler =& xoops_getmodulehandler('forms', 'formulize');
     $currentForm = $formHandler->get($screen->getVar('fid'));
     $previousForm = $formHandler->get($screen->getVar('paraentryform'));
     $currentCaptions = $currentForm->getVar('elementCaptions');
     $captionToMatch = $currentCaptions[$ele_handle];
     $previousCaptions = $previousForm->getVar('elementCaptions');
     $previousElementHandle = array_search($captionToMatch, $previousCaptions);
     if (!$previousElementHandle) {
         return "";
     }
     $elementName = $de ? "de_" . $fid . "_" . $entryId . "_" . $element_id : "ele_" . $element_id;
     // displayElement elements have different names from regular elements
     $previousElementId = formulize_getIdFromElementHandle($previousElementHandle);
     // function is in extract.php
     // setup the javascript based on the type of question, and setup other data that is required
     switch ($type) {
         case "text":
         case "date":
             $javascript = "onchange='javascript:this.form." . $elementName . ".value=this.form.prev_" . $element_id . ".value;'";
             break;
         case "radio":
             // need to get the options of the question so we know what to match
             $prevElementMetaData = formulize_getElementMetaData($previousElementId);
             // use this function in extract instead of the get element method in handler, since this is guaranteed to be already be cached in memory
             $prevElement_ele_value = unserialize($prevElementMetaData['ele_value']);
             $prevElementOptions = array_keys($prevElement_ele_value);
             $javascript = "onchange='javascript:if(this.form.prev_" . $element_id . ".value !== \"\") { this.form." . $elementName . "[this.form.prev_" . $element_id . ".value].checked=true; }'";
             break;
         case "yn":
             $javascript = "onchange='javascript:if(this.form.prev_" . $element_id . ".value !== \"\") { this.form." . $elementName . "[this.form.prev_" . $element_id . ".value].checked=true; }'";
             break;
     }
     $previousOptions = array();
     $prevOptionsExist = false;
     foreach ($entries as $id => $entry) {
         $value = htmlspecialchars(strip_tags(display($entry, $previousElementHandle)));
         if (is_array($value)) {
             $value = printSmart(implode(", ", $value));
         }
         if (trim($value) === "" or trim($value) == "0000-00-00") {
             continue;
         }
         $prevOptionsExist = true;
         switch ($type) {
             case "text":
             case "date":
                 $previousOptions[$value] = $value;
                 break;
             case "radio":
                 $prevElementPosition = array_search($value, $prevElementOptions);
                 // need to figure out which option matches the text of the value
                 if ($prevElementPosition !== false) {
                     $previousOptions[$prevElementPosition] = $value;
                     // for radio buttons, we need to pass the position of the option
                 }
                 break;
             case "yn":
                 if ($value == _formulize_TEMP_QYES) {
                     $previousOptions[0] = $value;
                 } elseif ($value == _formulize_TEMP_QNO) {
                     $previousOptions[1] = $value;
                 }
                 break;
         }
     }
     if (!$prevOptionsExist) {
         return "";
     }
     $prevUI = new xoopsFormSelect('', 'prev_' . $element_id, '123qweasdzxc', 1, false);
     // 123qweasdzxc is meant to be a unique value that will never be selected, since we don't ever want a previous selection showing by default
     $prevUI->addOption('', _AM_FORMULIZE_PREVIOUS_OPTION);
     $prevUI->addOptionArray($previousOptions);
     $prevUI->setExtra($javascript);
     return $prevUI;
 }
Пример #2
0
         break;
     case "min":
         $calc_name = _formulize_DE_CALC_MIN;
         break;
     case "max":
         $calc_name = _formulize_DE_CALC_MAX;
         break;
     case "count":
         $calc_name = _formulize_DE_CALC_COUNT;
         break;
     case "per":
         $calc_name = _formulize_DE_CALC_PER;
         break;
 }
 $tray = new xoopsFormElementTray("&nbsp;&nbsp&nbsp;" . $calc_name, "<br>");
 $tempcalc1 = new xoopsFormSelect("", $tempname, $current_val);
 $tempcalc1->addOption("noblanks", _formulize_DE_CALCNOBLANKS);
 $tempcalc1->addOption("all", _formulize_DE_CALCALL);
 $tempcalc1->addOption("onlyblanks", _formulize_DE_CALCONLYBLANKS);
 $tempcalc1->addOption("justnoblanks", _formulize_DE_CALCJUSTNOBLANKS);
 $tempcalc1->addOption("justnozeros", _formulize_DE_CALCJUSTNOZEROS);
 $tempcalc1->addOption("custom", _formulize_DE_CALCCUSTOM);
 $tempcalc1->setExtra("onchange='javascript:setCalcCustom(\"" . $calc . $hidden['column'] . "\");'");
 $tempcalcCustom = new xoopsFormText("", $tempname . "_custom", 12, 255, $current_val_custom);
 $tempcalcCustom->setExtra("onclick='javascript:window.document.pickcalc.elements[\"" . $calc . $hidden['column'] . "\"].options[5].selected = true;window.document.pickcalc.elements[\"" . $calc . $hidden['column'] . "\"].value=\"custom\"'");
 $tempcalclabel = new xoopsFormLabel("", _formulize_DE_CALC_BTEXT . " " . $tempcalc1->render() . " " . $tempcalcCustom->render());
 $groupingDefaults = explode("!@^%*", $_POST['grouping_' . $calc . "_" . $hidden['column']]);
 // get the individual grouping settings from the one value that has been passed back
 $groupingDefaults1 = $groupingDefaults[0];
 if (isset($_POST['grouping2_' . $calc . "_" . $hidden['column']])) {
     $groupingDefaults2 = $_POST['grouping2_' . $calc . "_" . $hidden['column']];
Пример #3
0
    $elementlist = $setwho_elementlist->render();
    $setwho_elementuids = new xoopsFormRadio('', 'setwho', $_POST['setwho']);
    $setwho_elementuids->addOption('elementuids', _formulize_DE_SETNOT_WHO_ELEMENTUIDS . $elementlist);
    $setwho_linkcreatorlist = new xoopsFormSelect('', 'lc_ele_id', $_POST['lc_ele_id'], 1);
    $setwho_linkcreatorlist->setExtra("onfocus=\"javascript:window.document.setnot.setwho[4].checked=true\"");
    $setwho_linkcreatorlist->addOptionArray($linkcreator_options);
    $linkcreatorlist = $setwho_linkcreatorlist->render();
    $setwho_linkcreator = new xoopsFormRadio('', 'setwho', $_POST['setwho']);
    $setwho_linkcreator->addOption('linkcreator', _formulize_DE_SETNOT_WHO_LINKCREATOR . "<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" . $linkcreatorlist);
    $setwho_elementemaillist = new xoopsFormSelect('', 'email_ele_id', $_POST['email_ele_id'], 1);
    $setwho_elementemaillist->setExtra("onfocus=\"javascript:window.document.setnot.setwho[5].checked=true\"");
    $setwho_elementemaillist->addOptionArray($elementemail_options);
    $elementemaillist = $setwho_elementemaillist->render();
    $setwho_elementemail = new xoopsFormRadio('', 'setwho', $_POST['setwho']);
    $setwho_elementemail->addOption('elementemail', _formulize_DE_SETNOT_WHO_ELEMENTEMAIL . $elementemaillist);
    $setwho_grouplist = new xoopsFormSelect('', 'gid', $_POST['gid'], 1);
    $setwho_grouplist->setExtra("onfocus=\"javascript:window.document.setnot.setwho[6].checked=true\"");
    $setwho_grouplist->addOptionArray($group_options);
    $grouplist = $setwho_grouplist->render();
    $setwho_group = new xoopsFormRadio('', 'setwho', $_POST['setwho']);
    $setwho_group->addOption('groupid', _formulize_DE_SETNOT_WHO_GROUP . $grouplist);
    $setwho->addElement($setwho_me);
    $setwho->addElement($setwho_curuser);
    $setwho->addElement($setwho_creator);
    $setwho->addElement($setwho_elementuids);
    $setwho->addElement($setwho_linkcreator);
    $setwho->addElement($setwho_elementemail);
    $setwho->addElement($setwho_group);
    $setnot->addElement($setwho);
}
if (!isset($_POST['setfor'])) {
Пример #4
0
//$themecss .= ".css";
print "<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"{$themecss}\" />\n";
print "</head>";
print "<body style=\"background: white; margin-top:20px;\"><center>";
print "<table style=\"width: 100%;\"><tr><td style=\"width: 5%;\"></td><td style=\"width: 90%;\">";
$advsearch = new xoopsThemeForm(_formulize_DE_BUILDQUERY, 'buildq', XOOPS_URL . "/modules/formulize/include/advsearch.php?fid={$fid}&frid={$frid}");
//$returned = addReqdCalcs($pickcalc);
//$pickcalc = $returned['form'];
$columns_andor = new xoopsFormElementTray('', "<br />");
$columns_and = new xoopsFormRadio('', 'multi_andor', '1');
$columns_and->addOption(1, _formulize_DE_AS_MULTI_AND);
$columns_andor->addElement($columns_and);
$columns_or = new xoopsFormRadio('', 'multi_andor', '1');
$columns_or->addOption(2, _formulize_DE_AS_MULTI_OR);
$columns_andor->addElement($columns_or);
$columns = new xoopsFormSelect(_formulize_DE_AS_FIELD . "<br /><br />" . $columns_andor->render(), 'column', '', 5, true);
$columns->addOption("creation_uid", _formulize_DE_CALC_CREATOR);
$columns->addOption("mod_uid", _formulize_DE_CALC_MODIFIER);
$columns->addOption("creation_datetime", _formulize_DE_CALC_CREATEDATE . ' (YYYY-mm-dd)');
$columns->addOption("mod_datetime", _formulize_DE_CALC_MODDATE . ' (YYYY-mm-dd)');
$columns->addOption("creator_email", _formulize_DE_CALC_CREATOR_EMAIL);
$columns->addOptionArray($options);
$opterm = new xoopsFormElementTray(_formulize_DE_AS_OPTERM, "&nbsp;&nbsp;");
$op = new xoopsFormSelect('', 'op');
$ops['=='] = "=";
$ops['!='] = "NOT";
$ops['>'] = ">";
$ops['<'] = "<";
$ops['>='] = ">=";
$ops['<='] = "<=";
$ops['LIKE'] = "LIKE";
Пример #5
0
    }
} else {
    exit("Error: no advanced scope permission detected.");
}
include_once XOOPS_ROOT_PATH . "/class/xoopsformloader.php";
print "<HTML>";
print "<head>";
print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=" . _CHARSET . "\" />";
print "<title>" . _formulize_DE_PICKASCOPE . "</title>\n";
scopeJavascript();
print "<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"" . XOOPS_URL . "/xoops.css\" />\n";
$themecss = xoops_getcss();
//$themecss = substr($themecss, 0, -6);
//$themecss .= ".css";
print "<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"{$themecss}\" />\n";
print "</head>\n";
print "<body style=\"background: white; margin-top:20px;\"><center>";
print "<table style=\"width: 100%;\"><tr><td style=\"width: 5%;\"></td><td style=\"width: 90%;\">";
$advscope = new xoopsThemeForm(_formulize_DE_PICKASCOPE, 'advscope', XOOPS_URL . "/modules/formulize/include/advscope.php?fid={$fid}&frid={$frid}");
$gcount = count($availgroups);
$size = $gcount < 10 ? $gcount : 10;
$grouplist = new xoopsFormSelect(_formulize_DE_AVAILGROUPS, 'newscope', $curgroups, $size, true);
$grouplist->addOptionArray($availgroups);
$doneButton = new xoopsFormButton('', 'done', _formulize_DE_USETHISSCOPE, 'button');
$doneButton->setExtra("onclick=\"javascript:updateScope(this.form);return false;\"");
$advscope->addElement($grouplist);
$advscope->addElement($doneButton);
print $advscope->render();
print "</td><td style=\"width: 5%;\"></td></tr></table>\n";
print "</center></body>\n";
print "</HTML>";
Пример #6
0
 function editForm($screen, $fid)
 {
     // provide ui for title, ui for frid, hidden fid, hidden sid
     include_once XOOPS_ROOT_PATH . "/class/xoopsformloader.php";
     $form = new XoopsThemeForm(_AM_FORMULIZE_SCREEN_FORM, "editscreenform", "editscreen.php");
     $form->addElement(new xoopsFormHidden('fid', $fid));
     $title = is_object($screen) ? $screen->getVar('title') : "";
     $sid = is_object($screen) ? $screen->getVar('sid') : 0;
     $frid = is_object($screen) ? $screen->getVar('frid') : 0;
     $form->addElement(new xoopsFormHidden('sid', $sid));
     $form->addElement(new xoopsFormHidden('oneditscreen', 1));
     $form->addElement(new xoopsFormText(_AM_FORMULIZE_SCREEN_TITLE, 'title', 30, 255, $title));
     // get the frameworks that this form is involved in
     $framework_handler =& xoops_getmodulehandler('frameworks', 'formulize');
     $frameworks = $framework_handler->getFrameworksByForm($fid);
     $options[0] = _AM_FORMULIZE_USE_NO_FRAMEWORK;
     foreach ($frameworks as $thisFramework) {
         $options[$thisFramework->getVar('frid')] = $thisFramework->getVar('name');
     }
     $frameworkChoice = new xoopsFormSelect(_AM_FORMULIZE_SELECT_FRAMEWORK, 'frid', $frid, 1, false);
     $frameworkChoice->setExtra("onchange='javascript:frameworkChange(window.document.editscreenform.frid)'");
     // set a javascript event for this element in case parts of some screen forms change depending on the framework selected
     $frameworkChoice->addOptionArray($options);
     $form->addElement($frameworkChoice);
     // show the security token question -- added Jan 25 2008 -- jwe
     $useTokenDefault = $screen->getVar('sid') ? $screen->getVar('useToken') : 1;
     $securityQuestion = new xoopsFormRadioYN(_AM_FORMULIZE_SCREEN_SECURITY, 'useToken', $useTokenDefault);
     $securityQuestion->setDescription(_AM_FORMULIZE_SCREEN_SECURITY_DESC);
     $form->addElement($securityQuestion);
     return $form;
 }
Пример #7
0
        $currentlock = $lastpub[0]['sv_lockcontrols'];
    } else {
        $lastpubgroups[0] = "donotpub";
        $currentlock = 1;
        // default to locked
    }
    $overlap = array_intersect($lastpubgroups, array_keys($publishgroups));
    if (count($overlap) == 0) {
        // ie: no default is actually part of the available groups
        $lastpubgroups[0] = "donotpub";
    }
    $size = count($publishgroups);
    if ($size > 7) {
        $size = 7;
    }
    $pubgrouplist = new xoopsFormSelect(_formulize_DE_SAVE_PUBGROUPS, 'pubgrouplist', $lastpubgroups, $size, true);
    $pubgrouplist->addOptionArray($publishgroups);
    $lockcontrols = new xoopsFormElementTray(_formulize_DE_SAVE_LOCKCONTROLS, "<br>");
    $yes = new xoopsFormRadio('', 'lockcontrols', $currentlock);
    $yes->addOption("1", _YES);
    $no = new xoopsFormRadio('', 'lockcontrols', $currentlock);
    $no->addOption("0", _NO);
    $lockcontrols->addElement($yes);
    $lockcontrols->addElement($no);
    $saveform->addElement($pubgrouplist);
    $saveform->addElement($lockcontrols);
}
$viewselection = new xoopsFormHidden("viewselection", "");
$saveform->addElement($viewselection);
$subButton = new xoopsFormButton('', 'submitx', _formulize_DE_SAVE_BUTTON, 'button');
$subButton->setExtra("onclick=\"javascript:saveSettings(this.form);\"");
Пример #8
0
function drawPageUI($pageNumber, $pageTitle, $elements, $conditions, $form, $options, $ops)
{
    // insert page here button
    $form->addElement(new xoopsFormButton('', 'insertpage' . $pageNumber, _AM_FORMULIZE_SCREEN_INSERTPAGE, 'submit'));
    // pageNumbers start at 0, since that's how the arrays are indexed, they start from zero
    // but whatever we show users must start at 1 (there is no page 0 as far as they are concerned), so we add one to make the visiblePageNumber
    $visiblePageNumber = $pageNumber + 1;
    // page title
    $pageTitleBox = new xoopsFormText(_AM_FORMULIZE_SCREEN_PAGETITLE . ' ' . $visiblePageNumber, 'pagetitle_' . $pageNumber, 50, 255, $pageTitle);
    $form->addElement($pageTitleBox, true);
    // elements
    $elementSelection = new xoopsFormSelect(_AM_FORMULIZE_SCREEN_A_PAGE . ' ' . $visiblePageNumber . '<br><br><input type=submit name=delete' . $pageNumber . ' value="' . _AM_FORMULIZE_DELETE_THIS_PAGE . '" onclick="javascript:return confirmDeletePage(\'' . $pageNumber . '\');">', 'page' . $pageNumber, $elements, 10, true);
    $elementSelection->addOptionArray($options);
    $form->addElement($elementSelection);
    // page conditions -- september 6 2007
    if (!isset($conditions['pagecons'])) {
        $conditionsYesNo = 'none';
    } else {
        $conditionsYesNo = $conditions['pagecons'];
    }
    $conditionsTray = new xoopsFormElementTray(_AM_FORMULIZE_SCREEN_CONS_PAGE . ' ' . $visiblePageNumber, '<br />');
    $conditionsTray->setDescription(_AM_FORMULIZE_SCREEN_CONS_HELP);
    $nocons = new xoopsFormRadio('', 'pagecons' . $pageNumber, $conditionsYesNo);
    $nocons->addOption('none', _AM_FORMULIZE_SCREEN_CONS_NONE);
    $conditionlist = "";
    foreach ($conditions['details']['elements'] as $conIndex => $elementValue) {
        $form->addElement(new xoopsFormHidden('pageelements' . $pageNumber . '[]', $elementValue));
        $form->addElement(new xoopsFormHidden('pageops' . $pageNumber . '[]', $conditions['details']['ops'][$conIndex]));
        $form->addElement(new xoopsFormHidden('pageterms' . $pageNumber . '[]', $conditions['details']['terms'][$conIndex]));
        $conditionlist .= $options[$conditions['details']['elements'][$conIndex]] . " " . $conditions['details']['ops'][$conIndex] . " " . $conditions['details']['terms'][$conIndex] . "<br />";
    }
    // setup the operator boxes...
    $opterm = new xoopsFormElementTray('', "&nbsp;&nbsp;");
    $element = new xoopsFormSelect('', 'pageelements' . $pageNumber . '[]');
    $element->setExtra("onfocus=\"javascript:window.document.editscreenform.pagecons" . $pageNumber . "[1].checked=true\"");
    $element->addOptionArray($options);
    $op = new xoopsFormSelect('', 'pageops' . $pageNumber . '[]');
    $op->addOptionArray($ops);
    $op->setExtra("onfocus=\"javascript:window.document.editscreenform.pagecons" . $pageNumber . "[1].checked=true\"");
    $term = new xoopsFormText('', 'pageterms' . $pageNumber . '[]', 10, 255);
    $term->setExtra("onfocus=\"javascript:window.document.editscreenform.pagecons" . $pageNumber . "[1].checked=true\"");
    $opterm->addElement($element);
    $opterm->addElement($op);
    $opterm->addElement($term);
    $addcon = new xoopsFormButton('', 'addcon', _AM_FORMULIZE_SCREEN_CONS_ADDCON, 'submit');
    $addcon->setExtra("onfocus=\"javascript:window.document.editscreenform.pagecons" . $pageNumber . "[1].checked=true\"");
    $conditionui = "<br />{$conditionlist}<nobr>" . $opterm->render() . "</nobr><br />" . $addcon->render();
    $yescons = new xoopsFormRadio('', 'pagecons' . $pageNumber, $conditionsYesNo);
    $yescons->addOption('yes', _AM_FORMULIZE_SCREEN_CONS_YES . $conditionui);
    $conditionsTray->addElement($nocons);
    $conditionsTray->addElement($yescons);
    $form->addElement($conditionsTray);
    return $form;
}
Пример #9
0
function formulize_createFilterUIMatch($newElementName, $formName, $filterName, $options, $newOpName, $newTermName, $conditionlist)
{
    // setup the new element, operator, term boxes
    $new_elementOpTerm = new xoopsFormElementTray('', "&nbsp;&nbsp;");
    $element = new xoopsFormSelect('', $newElementName);
    $element->addOptionArray($options);
    $op = new xoopsFormSelect('', $newOpName);
    $ops['='] = "=";
    $ops['NOT'] = "NOT";
    $ops['>'] = ">";
    $ops['<'] = "<";
    $ops['>='] = ">=";
    $ops['<='] = "<=";
    $ops['LIKE'] = "LIKE";
    $ops['NOT LIKE'] = "NOT LIKE";
    $op->addOptionArray($ops);
    $term = new xoopsFormText('', $newTermName, 10, 255);
    $term->setExtra(" class=\"condition_term\" ");
    $new_elementOpTerm->addElement($element);
    $new_elementOpTerm->addElement($op);
    $new_elementOpTerm->addElement($term);
    return "<br />{$conditionlist}" . $new_elementOpTerm->render();
}