Ejemplo n.º 1
0
    $limit = $modx->db->getRecordCount($rs);
    if ($limit > 0) {
        require MODX_BASE_PATH . '/manager/includes/tmplvars.commands.inc.php';
        $output .= "<table style='position:relative' border='0' cellspacing='0' cellpadding='3' width='96%'>";
        for ($i = 0; $i < $limit; $i++) {
            $row = $modx->db->getRow($rs);
            if ($i > 0 && $i < $limit) {
                $output .= '<tr><td colspan="2"><div class="split"></div></td></tr>';
            }
            $output .= '<tr style="height: 24px;">
				<td align="left" valign="top" width="150">
					<span class=\'warning\'>' . $row['caption'] . '</span><br /><span class=\'comment\'>' . $row['description'] . '</span>
				</td>
				<td valign="top" style="position:relative">';
            $base_url = str_replace("assets/modules/docmanager/", "", MODX_BASE_URL);
            $output .= renderFormElement($row['type'], $row['id'], $row['default_text'], $row['elements'], $row['value'], ' style="width:300px;"');
            $output .= '</td></tr>';
        }
        $output .= '</table>';
        $output .= '<br />' . $dm->lang['DM_tv_ignore_tv'] . ' <input type="text" id="ignoreTV" name="ignoreTV" size="50" value="" />';
    } else {
        print $dm->lang['DM_tv_no_tv'];
    }
    print $output;
} else {
    print '';
}
function renderFormElement($field_type, $field_id, $default_text, $field_elements, $field_value, $field_style = '')
{
    global $modx;
    global $dm;
                if ($i++ > 0) {
                    echo "\t\t", '<tr><td colspan="2"><div class="split"></div></td></tr>', "\n";
                }
                // post back value
                if (array_key_exists('tv' . $row['id'], $_POST)) {
                    if (is_array($_POST['tv' . $row['id']])) {
                        $tvPBV = implode('||', $_POST['tv' . $row['id']]);
                    } else {
                        $tvPBV = $_POST['tv' . $row['id']];
                    }
                } else {
                    $tvPBV = $row['value'];
                }
                $tvDescription = !empty($row['description']) ? '<br /><span class="comment">' . $row['description'] . '</span>' : '';
                $tvInherited = substr($tvPBV, 0, 8) == '@INHERIT' ? '<br /><span class="comment inherited">(' . $_lang['tmplvars_inherited'] . ')</span>' : '';
                echo "\t\t", '<tr style="height: 24px;"><td align="left" valign="top" width="150"><span class="warning">', $row['caption'], "</span>\n", "\t\t\t", $tvDescription, $tvInherited, "</td>\n", "\t\t\t", '<td valign="top" style="position:relative;', $row['type'] == 'date' ? '' : '', '">', "\n", "\t\t\t", renderFormElement($row['type'], $row['id'], $row['default_text'], $row['elements'], $tvPBV, '', $row), "\n", "\t\t</td></tr>\n";
            }
            echo "\t</table>\n";
        } else {
            // There aren't any Template Variables
            echo "\t<p>" . $_lang['tmplvars_novars'] . "</p>\n";
        }
        ?>
            </div>
            <!-- end .sectionBody .tmplvars -->
        <?php 
    }
    ?>

    </div><!-- end #tabGeneral -->
            }
            // post back value
            if (array_key_exists('tv' . $row['id'], $_POST)) {
                if ($row['type'] == 'listbox-multiple') {
                    $tvPBV = implode('||', $_POST['tv' . $row['id']]);
                } else {
                    $tvPBV = $_POST['tv' . $row['id']];
                }
            } else {
                $tvPBV = $row['value'];
            }
            $zindex = $row['type'] === 'date' ? 'z-index:100;' : '';
            if ($row['type'] !== 'hidden') {
                echo '<tr style="height: 24px;"><td valign="top" width="150"><span class="warning">' . $row['caption'] . "</span>\n" . '<br /><span class="comment">' . $row['description'] . "</span></td>\n" . '<td valign="top" style="position:relative;' . $zindex . '">' . "\n" . renderFormElement($row['type'], $row['id'], $row['default_text'], $row['elements'], $tvPBV, '', $row) . "\n" . "</td></tr>\n";
            } else {
                echo '<tr style="display:none;"><td colspan="2">' . renderFormElement('hidden', $row['id'], $row['default_text'], $row['elements'], $tvPBV, '', $row) . "</td></tr>\n";
            }
        }
        echo "</table>\n";
    } else {
        // There aren't any Template Variables
        echo "\t<p>" . $_lang['tmplvars_novars'] . "</p>\n";
    }
    ?>
			</div>
			<!-- end .sectionBody .tmplvars -->
<?php 
}
?>

	</div><!-- end #tabGeneral -->
Ejemplo n.º 4
0
        function Run()
        {
            // Include MODx manager language file
            global $_lang;
            // Get manager language
            $manager_language = $this->modx->config['manager_language'];
            // Individual user language setting (if set)
            $query = 'SELECT setting_name, setting_value FROM ' . $this->modx->getFullTableName('user_settings') . ' WHERE setting_name=\'manager_language\' AND user='******'mgrInternalKey'];
            $records = $this->modx->db->query($query);
            if ($this->modx->db->getRecordCount($records) > 0) {
                $record = $this->modx->db->getRow($records);
                $manager_language = $record['setting_value'];
            }
            // Include_once the language file
            if (!isset($manager_language) || !file_exists(MODX_MANAGER_PATH . "includes/lang/" . $manager_language . ".inc.php")) {
                $manager_language = "english";
                // if not set, get the english language file.
            }
            // Include default language
            include_once MODX_MANAGER_PATH . "includes/lang/english.inc.php";
            // Include user language
            if ($manager_language != "english" && file_exists(MODX_MANAGER_PATH . "includes/lang/" . $manager_language . ".inc.php")) {
                include_once MODX_MANAGER_PATH . "includes/lang/" . $manager_language . ".inc.php";
            }
            // Get event
            $e =& $this->modx->Event;
            // Run plugin based on event
            switch ($e->name) {
                // Save document
                case 'OnDocFormSave':
                    // Saving process for Qm only
                    if (intval($_REQUEST['quickmanager']) == 1) {
                        $id = $e->params['id'];
                        $key = $id;
                        // Normal saving document procedure stops to redirect => Before redirecting secure documents and clear cache
                        // Secure web documents - flag as private (code from: manager/processors/save_content.processor.php)
                        include $this->modx->config['base_path'] . "manager/includes/secure_web_documents.inc.php";
                        secureWebDocument($key);
                        // Secure manager documents - flag as private (code from: manager/processors/save_content.processor.php)
                        include $this->modx->config['base_path'] . "manager/includes/secure_mgr_documents.inc.php";
                        secureMgrDocument($key);
                        // Clear cache
                        $this->clearCache();
                        // Different doc to be refreshed than the one we are editing?
                        if (isset($_POST['qmrefresh'])) {
                            $id = intval($_POST['qmrefresh']);
                        }
                        // Redirect to clearer page which refreshes parent window and closes modal box frame
                        $this->modx->sendRedirect($this->modx->config['base_url'] . 'index.php?id=' . $id . '&quickmanagerclose=1', 0, 'REDIRECT_HEADER', 'HTTP/1.1 301 Moved Permanently');
                    }
                    break;
                    // Display page in front-end
                // Display page in front-end
                case 'OnWebPagePrerender':
                    // Get document id
                    $docID = $this->modx->documentIdentifier;
                    // Get page output
                    $output =& $this->modx->documentOutput;
                    // Close modal box after saving (previously close.php)
                    if (isset($_GET['quickmanagerclose'])) {
                        // Set url to refresh
                        $url = $this->modx->makeUrl($docID, '', '', 'full');
                        $output = '
                    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
                    <html xmlns="http://www.w3.org/1999/xhtml">
                    <head>
                    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
                    <title></title>
                    </head>
                    <body onload="javascript: parent.location.href = \'' . $url . '\';">
                    </body>
                    </html>
                    ';
                        break;
                    }
                    // QM+ TV edit
                    if (intval($_GET['quickmanagertv'] == 1) && $_GET['tvname'] != '' && $this->tvbuttons == 'true') {
                        $tvName = '';
                        $locked = FALSE;
                        $access = FALSE;
                        $save = 0;
                        $imagePreview = '';
                        // Includes
                        $manager_path = 'manager/';
                        include_once $manager_path . 'includes/tmplvars.inc.php';
                        include_once $manager_path . 'includes/tmplvars.commands.inc.php';
                        include_once $manager_path . 'includes/tmplvars.format.inc.php';
                        // Get save status
                        if (isset($_POST['save'])) {
                            $save = intval($_POST['save']);
                        }
                        // Get TV name
                        if (preg_match('/^([^\\"\'\\(\\)<>!?]+)/i', $_GET['tvname'])) {
                            $tvName = $_GET['tvname'];
                        }
                        // Get TV array
                        $tv = $this->modx->getTemplateVar($tvName, '*', $docID);
                        // Handle default TVs
                        switch ($tvName) {
                            case 'pagetitle':
                                $tv['type'] = 'text';
                                $tv['caption'] = $this->getDefaultTvCaption($tvName);
                                $access = TRUE;
                                break;
                            case 'longtitle':
                                $tv['type'] = 'text';
                                $tv['caption'] = $this->getDefaultTvCaption($tvName);
                                $access = TRUE;
                                break;
                            case 'description':
                                $tv['type'] = 'text';
                                $tv['caption'] = $this->getDefaultTvCaption($tvName);
                                $access = TRUE;
                                break;
                            case 'content':
                                $tv['type'] = 'richtext';
                                $tv['caption'] = $this->getDefaultTvCaption($tvName);
                                $access = TRUE;
                                break;
                            case 'menutitle':
                                $tv['type'] = 'text';
                                $tv['caption'] = $this->getDefaultTvCaption($tvName);
                                $access = TRUE;
                                break;
                            case 'introtext':
                                $tv['type'] = 'textarea';
                                $tv['caption'] = $this->getDefaultTvCaption($tvName);
                                $access = TRUE;
                                break;
                        }
                        // Check TV access
                        if (!$access) {
                            $access = $this->checkTvAccess($tv['id']);
                        }
                        // User can access TV
                        if ($access) {
                            // Show TV form
                            if ($save == 0) {
                                // Check is document locked? Someone else is editing the document...  //$_lang['lock_msg']
                                if ($this->checkLocked()) {
                                    $locked = TRUE;
                                } else {
                                    $this->setLocked(1);
                                }
                                // Handle RTE
                                if ($tv['type'] == 'richtext') {
                                    // Invoke OnRichTextEditorInit event
                                    $eventOutput = $this->modx->invokeEvent("OnRichTextEditorInit", array('editor' => $this->modx->config['which_editor'], 'elements' => array('tv' . $tvName)));
                                    if (is_array($eventOutput)) {
                                        $editorHtml = implode("", $eventOutput);
                                    }
                                }
                                // Render TV html
                                $tvHtml = renderFormElement($tv['type'], $tv['name'], $tv['default_text'], $tv['elements'], $tv['value']);
                                // Get jQuery conflict mode
                                if ($this->noconflictjq == 'true') {
                                    $jq_mode = '$j';
                                } else {
                                    $jq_mode = '$';
                                }
                            } else {
                                // Remove document locked
                                $this->setLocked(0);
                                // Save TV
                                $this->saveTv($tvName);
                            }
                            // Page output: header
                            $output = '
                        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
                        <html xmlns="http://www.w3.org/1999/xhtml">
                        <head>
                        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
                        <title></title>
                        <link rel="stylesheet" type="text/css" href="' . $this->modx->config['site_url'] . 'assets/plugins/qm/css/style.css" />
                        <!--[if IE]><link rel="stylesheet" type="text/css" href="' . $this->modx->config['site_url'] . 'assets/plugins/qm/css/ie.css" /><![endif]-->
                        <!--[if lte IE 7]><link rel="stylesheet" type="text/css" href="' . $this->modx->config['site_url'] . 'assets/plugins/qm/css/ie7.css" /><![endif]-->
                        <script src="' . $this->modx->config['site_url'] . $this->jqpath . '" type="text/javascript"></script>
                        </head>
                        ';
                            // Page output: TV form
                            if ($save == 0) {
                                $output .= ' 
                            <body id="qm-tv-body">
                            ';
                                // Document is locked message
                                if ($locked) {
                                    $output .= '
                                <h1>' . $_lang['locked'] . '</h1>
                                <div id="qm-tv-description">' . $_lang['lock_msg'] . '</div> 
                                ';
                                } else {
                                    // Image preview
                                    if ($tv['type'] == 'image') {
                                        $imagePreview = '
                                    <div id="qm-tv-image-preview"><img class="qm-tv-image-preview-drskip qm-tv-image-preview-skip" src="' . $this->modx->config['site_url'] . $tv['value'] . '" alt="" /></div>
                                    <script type="text/javascript" charset="UTF-8">
                                    
                                    $(document).ready(function() {
                                        
                                        var previewImage = "#tv' . $tvName . '";
                                        var siteUrl = "' . $this->modx->config['site_url'] . '";
                                        
                                        OriginalSetUrl = SetUrl; // Copy the existing Image browser SetUrl function						
                            			SetUrl = function(url, width, height, alt) {	// Redefine it to also tell the preview to update
                            				OriginalSetUrl(url, width, height, alt);
                            				$(previewImage).trigger("change");
                            			}
                                        
                                        $(previewImage).change(function() {
                                            $("#qm-tv-image-preview").empty();
                                             if ($(previewImage).val()!="" ){
                                                 $("#qm-tv-image-preview").append("<img class=\\"qm-tv-image-preview-drskip qm-tv-image-preview-skip\\" src=\\"" + siteUrl + $(previewImage).val()  + "\\" alt=\\"\\" />");
                                             }
                                             else{
                                                 $("#qm-tv-image-preview").append("");
                                             }
                                         });
                                    });
 
                                    </script>
                                    ';
                                    }
                                    $output .= ' 
                                <form id="qm-tv-form" name="mutate" method="post" enctype="multipart/form-data" action="' . $this->modx->config['site_url'] . 'index.php?id=' . $docID . '&amp;quickmanagertv=1&amp;tvname=' . $tvName . '">
                                <input type="hidden" name="tvid" value="' . $tv['id'] . '" />
                                <input id="save" type="hidden" name="save" value="1" />
                                    
                                <div id="qm-tv-actions">
                                <div class="qm-cancel"><a href="#" onclick="parent.' . $jq_mode . '.fn.colorbox.close(); return false;"><span>' . $_lang['cancel'] . '</span></a></div>
                                <div class="qm-save"><a href="#" onclick="document.forms[\'mutate\'].submit(); return false;"><span>' . $_lang['save'] . '</span></a></div>
                                </div>
                                
                                <h1>' . $tv['caption'] . '</h1>
                                
                                <div id="qm-tv-description">' . $tv['description'] . '</div>
                                
                                <div id="qm-tv-tv" class="qm-tv-' . $tv['type'] . '">
                                ' . $tvHtml . '
                                </div>
                                
                                ' . $imagePreview . '
                                
                                </form>
                                ' . $editorHtml . '
                                ';
                                }
                            } else {
                                $output .= '<body onload="parent.location.reload();">';
                            }
                            // Page output: footer
                            $output .= '
                        </body>
                        </html>
                        ';
                        } else {
                            $output = 'Error: Access denied.';
                        }
                    } else {
                        if (isset($_SESSION['mgrValidated']) && $_REQUEST['z'] != 'manprev') {
                            // If logout break here
                            if (isset($_REQUEST['logout'])) {
                                $this->Logout();
                                break;
                            }
                            $userID = $_SESSION['mgrInternalKey'];
                            //$docID = $this->modx->documentIdentifier;
                            $doc = $this->modx->getDocument($docID);
                            // Edit button
                            $editButton = '
                        <li class="qmEdit">
                        <a class="qmButton qmEdit colorbox" href="' . $this->modx->config['site_url'] . 'manager/index.php?a=27&amp;id=' . $docID . '&amp;quickmanager=1"><span> ' . $_lang['edit_resource'] . '</span></a>
                        </li>
                        ';
                            // Check if user has manager access to current document
                            $access = $this->checkAccess();
                            // Does user have permissions to edit document
                            if ($access) {
                                $controls .= $editButton;
                            }
                            if ($this->addbutton == 'true' && $access) {
                                // Add button
                                $addButton = '
                            <li class="qmAdd">
                            <a class="qmButton qmAdd colorbox" href="' . $this->modx->config['site_url'] . 'manager/index.php?a=4&amp;pid=' . $docID . '&amp;quickmanager=1"><span>' . $_lang['create_resource_here'] . '</span></a>
                            </li>
                            ';
                                // Does user have permissions to add document
                                if ($this->modx->hasPermission('new_document')) {
                                    $controls .= $addButton;
                                }
                            }
                            // Custom add buttons if not empty and enough permissions
                            if ($this->custombutton != '') {
                                // Replace [*id*] with current doc id
                                $this->custombutton = str_replace("[*id*]", $docID, $this->custombutton);
                                // Handle [~id~] links
                                $this->custombutton = $this->modx->rewriteUrls($this->custombutton);
                                $buttons = explode("||", $this->custombutton);
                                // Buttons are divided by "||"
                                // Custom buttons class index
                                $i = 0;
                                // Parse buttons
                                foreach ($buttons as $key => $field) {
                                    $i++;
                                    $field = substr($field, 1, -1);
                                    // Trim "'" from beginning and from end
                                    $buttonParams = explode("','", $field);
                                    // Button params are divided by "','"
                                    $buttonTitle = $buttonParams[0];
                                    $buttonAction = $buttonParams[1];
                                    // Contains URL if this is not add button
                                    $buttonParentId = $buttonParams[2];
                                    // Is empty is this is not add button
                                    $buttonTplId = $buttonParams[3];
                                    // Button visible for all
                                    if ($buttonParams[4] == '') {
                                        $showButton = TRUE;
                                    } else {
                                        $showButton = FALSE;
                                        // Get user roles the button is visible for
                                        $buttonRoles = explode(",", $buttonParams[4]);
                                        // Roles are divided by ','
                                        // Check if user role is found
                                        foreach ($buttonRoles as $key => $field) {
                                            if ($field == $_SESSION['mgrRole']) {
                                                $showButton = TRUE;
                                            }
                                        }
                                    }
                                    // Show custom button
                                    if ($showButton) {
                                        switch ($buttonAction) {
                                            case 'new':
                                                $customButton = '
                                            <li class="qm-custom-' . $i . ' qmCustom">
                                            <a class="qmButton qmCustom colorbox" href="' . $this->modx->config['site_url'] . 'manager/index.php?a=4&amp;pid=' . $buttonParentId . '&amp;quickmanager=1&amp;customaddtplid=' . $buttonTplId . '"><span>' . $buttonTitle . '</span></a>
                                            </li>
                                            ';
                                                break;
                                            case 'link':
                                                $customButton = '
                                            <li class="qm-custom-' . $i . ' qmCustom">
                                            <a class="qmButton qmCustom" href="' . $buttonParentId . '" ><span>' . $buttonTitle . '</span></a>
                                            </li>
                                            ';
                                                break;
                                            case 'modal':
                                                $customButton = '
                                            <li class="qm-custom-' . $i . ' qmCustom">
                                            <a class="qmButton qmCustom colorbox" href="' . $buttonParentId . '" ><span>' . $buttonTitle . '</span></a>
                                            </li>
                                            ';
                                                break;
                                        }
                                        $controls .= $customButton;
                                    }
                                }
                            }
                            // Go to Manager button
                            if ($this->managerbutton == 'true') {
                                $managerButton = '
                            <li class="qmManager">
                            <a class="qmButton qmManager" title="' . $_lang['manager'] . '" href="' . $this->modx->config['site_url'] . 'manager/" ><span>' . $_lang['manager'] . '</span></a>
                            </li>
                            ';
                                $controls .= $managerButton;
                            }
                            // Logout button
                            $logout = $this->modx->config['site_url'] . 'manager/index.php?a=8&amp;quickmanager=logout&amp;logoutid=' . $docID;
                            $logoutButton = '
                        <li class="qmLogout">
                        <a id="qmLogout" class="qmButton qmLogout" title="' . $_lang['logout'] . '" href="' . $logout . '" ><span>' . $_lang['logout'] . '</span></a>
                        </li>
                        ';
                            $controls .= $logoutButton;
                            // Add action buttons
                            $editor = '
                        <div id="qmEditorClosed"></div>
                        
    					<div id="qmEditor">
    					
                        <ul>
                        <li id="qmClose"><a class="qmButton qmClose" href="#" onclick="javascript: return false;">X</a></li>
                        <li><a id="qmLogoClose" class="qmClose" href="#" onclick="javascript: return false;"></a></li>
                        ' . $controls . '
                        </ul>
    					</div>';
                            $css = '
                        <link rel="stylesheet" type="text/css" href="' . $this->modx->config['site_url'] . 'assets/plugins/qm/css/style.css" />
                        <!--[if IE]><link rel="stylesheet" type="text/css" href="' . $this->modx->config['site_url'] . 'assets/plugins/qm/css/ie.css" /><![endif]-->
                        <!--[if lte IE 7]><link rel="stylesheet" type="text/css" href="' . $this->modx->config['site_url'] . 'assets/plugins/qm/css/ie7.css" /><![endif]-->
                        ';
                            // Autohide toolbar? Default: true
                            if ($this->autohide == 'false') {
                                $css .= '
                            <style type="text/css">
                            #qmEditor, #qmEditorClosed { top: 0px; }
                            </style>
                            ';
                            }
                            // Insert jQuery and ColorBox in head if needed
                            if ($this->loadfrontendjq == 'true') {
                                $head .= '<script src="' . $this->modx->config['site_url'] . $this->jqpath . '" type="text/javascript"></script>';
                            }
                            if ($this->loadtb == 'true') {
                                $head .= '
                            <link type="text/css" media="screen" rel="stylesheet" href="' . $this->modx->config['site_url'] . 'assets/plugins/qm/css/colorbox.css" />
                            
                            <style type="text/css">
                            .cboxIE #cboxTopLeft{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=' . $this->modx->config['site_url'] . 'assets/plugins/qm/css/images/internet_explorer/borderTopLeft.png, sizingMethod=\'scale\');}
                            .cboxIE #cboxTopCenter{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=' . $this->modx->config['site_url'] . 'assets/plugins/qm/css/images/internet_explorer/borderTopCenter.png, sizingMethod=\'scale\');}
                            .cboxIE #cboxTopRight{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=' . $this->modx->config['site_url'] . 'assets/plugins/qm/css/images/internet_explorer/borderTopRight.png, sizingMethod=\'scale\');}
                            .cboxIE #cboxBottomLeft{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=' . $this->modx->config['site_url'] . 'assets/plugins/qm/css/images/internet_explorer/borderBottomLeft.png, sizingMethod=\'scale\');}
                            .cboxIE #cboxBottomCenter{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=' . $this->modx->config['site_url'] . 'assets/plugins/qm/css/images/internet_explorer/borderBottomCenter.png, sizingMethod=\'scale\');}
                            .cboxIE #cboxBottomRight{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=' . $this->modx->config['site_url'] . 'assets/plugins/qm/css/images/internet_explorer/borderBottomRight.png, sizingMethod=\'scale\');}
                            .cboxIE #cboxMiddleLeft{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=' . $this->modx->config['site_url'] . 'assets/plugins/qm/css/images/internet_explorer/borderMiddleLeft.png, sizingMethod=\'scale\');}
                            .cboxIE #cboxMiddleRight{background:transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=' . $this->modx->config['site_url'] . 'assets/plugins/qm/css/images/internet_explorer/borderMiddleRight.png, sizingMethod=\'scale\');}
                            </style>
                            
                            <script type="text/javascript" src="' . $this->modx->config['site_url'] . 'assets/plugins/qm/js/jquery.colorbox-min.js"></script>
                            ';
                            }
                            // Insert ColorBox jQuery definitions for QuickManager+
                            $head .= '
                        <script type="text/javascript">
                        ';
                            // jQuery in noConflict mode
                            if ($this->noconflictjq == 'true') {
                                $head .= '
                        	var $j = jQuery.noConflict();
                        	$j(document).ready(function($)
                        	';
                                $jvar = 'j';
                            } else {
                                $head .= '$(document).ready(function($)';
                                $jvar = '';
                            }
                            $head .= '    
                            {                      
                        		$' . $jvar . '("a.colorbox").colorbox({width:"' . $this->tbwidth . '", height:"' . $this->tbheight . '", iframe:true, overlayClose:false, opacity:0.5, transition:"fade", speed:150});
                        	
                            	// Bindings
                            	$' . $jvar . '(document).bind("cbox_open", function(){
                                    $' . $jvar . '("body").css({"overflow":"hidden"});
                                    $' . $jvar . '("html").css({"overflow":"hidden"});
                                    $' . $jvar . '("#qmEditor").css({"display":"none"});
                                });  
                                
                            	$' . $jvar . '(document).bind("cbox_closed", function(){      
                                    $' . $jvar . '("body").css({"overflow":"auto"});
                                    $' . $jvar . '("html").css({"overflow":"auto"});
                                    $' . $jvar . '("#qmEditor").css({"display":"block"});
                                    // Remove manager lock by going to home page
                                    $' . $jvar . '.ajax({ type: "GET", url: "' . $this->modx->config['site_url'] . 'manager/index.php?a=2" });
                                });                  
                                                            						                            
                                // Hide QM+ if cookie found
                                if (getCookie("hideQM") == 1)
                                {
                                    $' . $jvar . '("#qmEditor").css({"display":"none"});
                                    $' . $jvar . '("#qmEditorClosed").css({"display":"block"});    
                                }
                                
                                // Hide QM+
                                $' . $jvar . '(".qmClose").click(function () {
                                    $' . $jvar . '("#qmEditor").hide("normal");
                                    $' . $jvar . '("#qmEditorClosed").show("normal");
                                    document.cookie = "hideQM=1; path=/;";
                                });
                                
                                // Show QM+
                                $' . $jvar . '("#qmEditorClosed").click(function () {
                                    {
                                        $' . $jvar . '("#qmEditorClosed").hide("normal");
                                        $' . $jvar . '("#qmEditor").show("normal");
                                        document.cookie = "hideQM=0; path=/;";
                                    }
                                });
    
                            });
                            
                            function getCookie(cookieName)
                            {
                                var results = document.cookie.match ( "(^|;) ?" + cookieName + "=([^;]*)(;|$)" );
        
                                if (results) return (unescape(results[2]));
                                else return null;
                            }
    
                        </script>
                        ';
                            // Insert QM+ css in head
                            $head .= $css;
                            // Place QM+ head information in head, just before </head> tag
                            $output = preg_replace('~(</head>)~i', $head . '\\1', $output);
                            // Insert editor toolbar right after <body> tag
                            $output = preg_replace('~(<body[^>]*>)~i', '\\1' . $editor, $output);
                            // Search and create edit buttons in to the content
                            if ($this->editbuttons == 'true' && $access) {
                                $output = preg_replace('/<!-- ' . $this->editbclass . ' ([0-9]+) \'([^\\"\'\\(\\)<>!?]+)\' -->/', '<span class="' . $this->editbclass . '"><a class="colorbox" href="' . $this->modx->config['site_url'] . 'manager/index.php?a=27&amp;id=$1&amp;quickmanager=1&amp;qmrefresh=' . $docID . '"><span>$2</span></a></span>', $output);
                            }
                            // Search and create new document buttons in to the content
                            if ($this->newbuttons == 'true' && $access) {
                                $output = preg_replace('/<!-- ' . $this->newbclass . ' ([0-9]+) ([0-9]+) \'([^\\"\'\\(\\)<>!?]+)\' -->/', '<span class="' . $this->newbclass . '"><a class="colorbox" href="' . $this->modx->config['site_url'] . 'manager/index.php?a=4&amp;pid=$1&amp;quickmanager=1&amp;customaddtplid=$2"><span>$3</span></a></span>', $output);
                            }
                            // Search and create new document buttons in to the content
                            if ($this->tvbuttons == 'true' && $access) {
                                // Set and get user doc groups for TV permissions
                                $this->docGroup = '';
                                $mrgDocGroups = $_SESSION['mgrDocgroups'];
                                if (!empty($mrgDocGroups)) {
                                    $this->docGroup = implode(",", $mrgDocGroups);
                                }
                                // Create TV buttons and check TV permissions
                                $output = preg_replace_callback('/<!-- ' . $this->tvbclass . ' ([^\\"\'\\(\\)<>!?]+) -->/', array(&$this, 'createTvButtons'), $output);
                            }
                        }
                    }
                    break;
                    // Edit document in ThickBox frame (MODx manager frame)
                // Edit document in ThickBox frame (MODx manager frame)
                case 'OnDocFormPrerender':
                    // If there is Qm call, add control buttons and modify to edit document page
                    if (intval($_REQUEST['quickmanager']) == 1) {
                        global $content;
                        // Set template for new document, action = 4
                        if (intval($_GET['a']) == 4) {
                            // Custom add button
                            if (isset($_GET['customaddtplid'])) {
                                // Set template
                                $content['template'] = intval($_GET['customaddtplid']);
                            } else {
                                switch ($this->tpltype) {
                                    // Template type is parent
                                    case 'parent':
                                        // Get parent document id
                                        $pid = $content['parent'] ? $content['parent'] : intval($_REQUEST['pid']);
                                        // Get parent document
                                        $parent = $this->modx->getDocument($pid);
                                        // Set parent template
                                        $content['template'] = $parent['template'];
                                        break;
                                        // Template is specific id
                                    // Template is specific id
                                    case 'id':
                                        $content['template'] = $this->tplid;
                                        break;
                                        // Template is inherited by Inherit Selected Template plugin
                                    // Template is inherited by Inherit Selected Template plugin
                                    case 'selected':
                                        // Get parent document id
                                        $pid = $content['parent'] ? $content['parent'] : intval($_REQUEST['pid']);
                                        // Get inheritTpl TV
                                        $tv = $this->modx->getTemplateVar("inheritTpl", "", $pid);
                                        // Set template to inherit
                                        if ($tv['value'] != '') {
                                            $content['template'] = $tv['value'];
                                        } else {
                                            $content['template'] = $this->modx->config['default_template'];
                                        }
                                        break;
                                }
                            }
                        }
                        // Manager control class
                        $mc = new Mcc();
                        // Hide default manager action buttons
                        $mc->addLine('$("#actions").hide();');
                        // Get MODx theme
                        $qm_theme = $this->modx->config['manager_theme'];
                        // Get doc id
                        $doc_id = intval($_REQUEST['id']);
                        // Get jQuery conflict mode
                        if ($this->noconflictjq == 'true') {
                            $jq_mode = '$j';
                        } else {
                            $jq_mode = '$';
                        }
                        // Add action buttons
                        $mc->addLine('var controls = "<div style=\\"padding:4px 0;position:fixed;top:10px;right:-10px;z-index:1000\\" id=\\"qmcontrols\\" class=\\"actionButtons\\"><ul><li><a href=\\"#\\" onclick=\\"documentDirty=false;document.mutate.save.click();return false;\\"><img src=\\"media/style/' . $qm_theme . '/images/icons/save.png\\" />' . $_lang['save'] . '</a></li><li><a href=\\"#\\" onclick=\\"documentDirty=false; parent.' . $jq_mode . '.fn.colorbox.close(); return false;\\"><img src=\\"media/style/' . $qm_theme . '/images/icons/stop.png\\"/>' . $_lang['cancel'] . '</a></li></ul></div>";');
                        // Modify head
                        $mc->head = '<script type="text/javascript">document.body.style.display="none";</script>';
                        if ($this->loadmanagerjq == 'true') {
                            $mc->head .= '<script src="' . $this->modx->config['site_url'] . $this->jqpath . '" type="text/javascript"></script>';
                        }
                        // Add control button
                        $mc->addLine('$("body").prepend(controls);');
                        // Hide fields to from front-end editors
                        if ($this->hidefields != '') {
                            $hideFields = explode(",", $this->hidefields);
                            foreach ($hideFields as $key => $field) {
                                $mc->hideField($field);
                            }
                        }
                        // Hide tabs to from front-end editors
                        if ($this->hidetabs != '') {
                            $hideTabs = explode(",", $this->hidetabs);
                            foreach ($hideTabs as $key => $field) {
                                $mc->hideTab($field);
                            }
                        }
                        // Hide sections from front-end editors
                        if ($this->hidesections != '') {
                            $hideSections = explode(",", $this->hidesections);
                            foreach ($hideSections as $key => $field) {
                                $mc->hideSection($field);
                            }
                        }
                        // Hidden field to verify that QM+ call exists
                        $hiddenFields = '<input type="hidden" name="quickmanager" value="1" />';
                        // Different doc to be refreshed?
                        if (isset($_REQUEST['qmrefresh'])) {
                            $hiddenFields .= '<input type="hidden" name="qmrefresh" value="' . intval($_REQUEST['qmrefresh']) . '" />';
                        }
                        // Output
                        $e->output($mc->Output() . $hiddenFields);
                    }
                    break;
                    // Where to logout
                // Where to logout
                case 'OnManagerLogout':
                    // Only if cancel editing the document and QuickManager is in use
                    if ($_REQUEST['quickmanager'] == 'logout') {
                        // Redirect to document id
                        if ($this->logout != 'manager') {
                            $this->modx->sendRedirect($this->modx->makeUrl($_REQUEST['logoutid']), 0, 'REDIRECT_HEADER', 'HTTP/1.1 301 Moved Permanently');
                        }
                    }
                    break;
            }
        }
Ejemplo n.º 5
0
 function renderRTE($type = 'image', $field, $defaultValue = '', $style = '')
 {
     //-- Uses the ModX manager/includes/tmplvars.inc.php file
     // renderFormElement($field_type, $field_id, $default_text, $field_elements, $field_value, $field_style='')
     global $modx;
     include_once MODX_BASE_PATH . 'manager/includes/tmplvars.inc.php';
     require_once MODX_BASE_PATH . 'manager/includes/tmplvars.commands.inc.php';
     $event_output = $modx->invokeEvent("OnRichTextEditorInit", array('editor' => $modx->config['which_editor'], 'elements' => array('tv' . $field)));
     if (is_array($event_output)) {
         $editor_html = implode("", $event_output);
     }
     $rte_html = renderFormElement($type, $field, $defaultValue, '', '', $style);
     return str_replace('tv' . $field, $field, $rte_html . $editor_html);
 }
Ejemplo n.º 6
0
            $row = mysql_fetch_assoc($rs);
            if ($row['type'] == 'richtext' || $row['type'] == 'htmlarea') {
                // Add richtext editor to the list
                if (is_array($replace_richtexteditor)) {
                    $replace_richtexteditor = array_merge($replace_richtexteditor, array("tv" . $row['id']));
                } else {
                    $replace_richtexteditor = array("tv" . $row['id']);
                }
            }
            // splitter
            if ($i > 0 && $i < $limit) {
                echo "\t\t", '<tr><td colspan="2"><div class="split"></div></td></tr>', "\n";
            }
            $tvPBV = array_key_exists('tv' . $row['id'], $_POST) ? $_POST['tv' . $row['id']] : $row['value'];
            // post back value
            echo "\t\t", '<tr style="height: 24px;"><td align="left" valign="top" width="150"><span class="warning">', $row['caption'], "</span>\n", "\t\t\t", '<br /><span class="comment">', $row['description'], "</span></td>\n", "\t\t\t", '<td valign="top" style="position:relative">', "\n", "\t\t\t", renderFormElement($row['type'], $row['id'], $row['default_text'], $row['elements'], $tvPBV, ' style="width:300px;"'), "\n";
            "\t\t</td></tr>\n";
        }
        echo "\t</table>\n";
    } else {
        // There aren't any Template Variables
        echo "\t<p>" . $_lang['tmplvars_novars'] . "</p>\n";
    }
    ?>
</div><!-- end .sectionBody .tmplvars -->
<?php 
}
?>

<?php 
/*******************************
Ejemplo n.º 7
0
    $json_opts .= (strlen($json_opts) ? "," : "") . json_encode($option);
    // Generate directory listing
    $TreeSelect = new TreeSelect($opt);
    if (is_array($TreeSelect->treeList) && count($TreeSelect->treeList)) {
        // ... and put it into HTML code
        $html_tree = $TreeSelect->list2HTML();
        $htmlTrees .= strlen($html_tree) ? (strlen($htmlTrees) ? "," : "") . "'" . $html_tree . "'" : "";
    }
    unset($TreeSelect);
}
if (!strlen($htmlTrees)) {
    return;
}
$e =& $modx->Event;
if ($e->name == 'OnDocFormRender') {
    $modx_script = renderFormElement('text', 0, '', '', '');
    preg_match('/(<script[^>]*?>.*?<\\/script>)/si', $modx_script, $matches);
    $output = $matches[0];
    $rel_pluginPath = "../" . str_replace(MODX_BASE_PATH, '', $pluginPath);
    // Include our JS and CSS file and modify output
    $output .= <<<OUTPUT

<!-- TreeSelect -->
<link rel="stylesheet" type="text/css" href="{$rel_pluginPath}TreeSelect.styles.css" />
<script type="text/javascript" src="{$rel_pluginPath}TreeSelect.class.js"></script>
<script type="text/javascript">
window.addEvent('domready', function() {
    var tvIds           = new Array({$tvIds});
    var trees           = new Array({$htmlTrees});
    var inputStatus     = new Array({$inputStatus});
    var basePath        = new Array({$basePaths});
Ejemplo n.º 8
0
            }
            $out .= '<div class="content_">
					<p>' . $lang['newsletter_edit_header'] . '</p>
					<form action="index.php?a=112&id=' . $mod_id . '&p=1&action=' . $action . '" method="post">
					<b>' . $lang['newsletter_edit_subject'] . '</b>
					<br /><input type="hidden" name="xid" value="' . $nid . '">
					<input type="text" size="50" maxlength="250" name="subject" value="' . $subject . '">
					<br /><br />';
            // Get access to template variable function (to output the RTE)
            include_once $modx->config['base_path'] . 'manager/includes/tmplvars.inc.php';
            $event_output = $modx->invokeEvent("OnRichTextEditorInit", array('editor' => $modx->config['which_editor'], 'elements' => array('tvmailMessage')));
            if (is_array($event_output)) {
                $editor_html = implode("", $event_output);
            }
            // Get HTML for the textarea, last parameters are default_value, elements, value
            $rte_html = renderFormElement('richtext', 'mailMessage', '', '', $newsletter);
            $out .= $rte_html;
            $out .= $editor_html;
            $out .= '<button class="but" type="submit" name="edit"  value="' . $lang['newsletter_edit_save'] . '"><img src="' . $href . 'images/add.png"> ' . $lang['newsletter_edit_save'] . '</button>
			</div>';
        } elseif ($_GET['action'] == 4) {
            // Insert newsletter into database
            $sql = "INSERT INTO easynewsletter_newsletter VALUES('', now(), '','', '', '" . $modx->db->escape($_POST['subject']) . "', '" . $modx->db->escape($_POST['tvmailMessage']) . "', '','') ";
            $result = $modx->db->query($sql);
            header('Location:index.php?a=112&id=' . $mod_id . '&p=1&action=1');
        } elseif ($_GET['action'] == 5) {
            // Обновление письма
            // замена адресов на абсолютные
            $sql = "UPDATE easynewsletter_newsletter SET subject='" . $_POST['subject'] . "', newsletter='" . $modx->db->escape($_POST['tvmailMessage']) . "' WHERE id='" . $_POST['xid'] . "'";
            $result = $modx->db->query($sql);
            header('Location:index.php?a=112&id=' . $mod_id . '&p=1&action=1');
Ejemplo n.º 9
0
 function renderMultiTVFormElement($fieldType, $fieldName, $fieldElements, $fieldClass, $fieldDefault)
 {
     $fieldName .= '_mtv';
     $currentScript = array();
     $currentClass = array();
     $fieldClass = explode(' ', $fieldClass);
     switch ($fieldType) {
         case 'url':
             $fieldType = 'text';
             break;
         case 'unixtime':
             $fieldType = 'date';
             break;
         case 'image':
             if ($this->display == 'datatable' || $this->display == 'dbtatable' || $this->display == 'vertical') {
                 $fieldClass[] = 'mtvImage';
             }
             break;
         case 'richtext':
             if ($this->display == 'datatable' || $this->display == 'dbtable' || $this->options['type'] == 'module') {
                 $this->fieldsrte[] = $this->options['type'] == 'module' ? $fieldName : "tv" . $this->tvID . $fieldName;
                 $fieldClass[] = 'tabEditor';
             } else {
                 $fieldType = 'textarea';
             }
             break;
     }
     $formElement = renderFormElement($fieldType, 0, '', $fieldElements, '', '', array());
     $formElement = preg_replace('/( tvtype=\\"[^\\"]+\\")/', '', $formElement);
     // remove tvtype attribute
     $formElement = preg_replace('/(<label[^>]*><\\/label>)/', '', $formElement);
     // remove empty labels
     $formElement = preg_replace('/( id=\\"[^\\"]+)/', ' id="[+tvid+]' . $fieldName, $formElement);
     // change id attributes
     $formElement = preg_replace('/( name=\\"[^\\"]+)/', ' name="[+tvid+]' . $fieldName, $formElement);
     // change name attributes
     preg_match('/(<script.*?script>)/s', $formElement, $currentScript);
     // get script
     if (isset($currentScript[1])) {
         // the tv script is only included for the first tv that is using them (tv with image or file type)
         $formElement = preg_replace('/(<script.*?script>)/s', '', $formElement);
         // remove the script tag
         if ($this->cmsinfo['kcfinder'] == 'false' || $this->cmsinfo['seturl'] == 'old') {
             $currentScript[1] = preg_replace('/function SetUrl.*script>/s', '</script>', $currentScript[1]);
             // remove original SetUrl function
         }
         $formElement = $formElement . $currentScript[1];
         // move the script tag to the end
     }
     preg_match('/<.*class=\\"([^\\"]*)/s', $formElement, $currentClass);
     // get current classes
     $formElement = preg_replace('/class=\\"[^\\"]*\\"/s', '', $formElement, 1);
     // remove all classes
     if ($fieldDefault != '') {
         $formElement = preg_replace('/(<\\w+)/', '$1 alt="' . $fieldDefault . '"', $formElement, 1);
         // add alt to first tag (the input)
         $fieldClass[] = 'setdefault';
     }
     if (isset($currentClass[1])) {
         $fieldClass[] = str_replace('DatePicker', 'mtvDatePicker', $currentClass[1]);
     }
     $fieldClass = implode(' ', array_unique($fieldClass));
     $formElement = preg_replace('/(<\\w+)/', '$1 class="' . $fieldClass . '"', $formElement, 1);
     // add class to first tag (the input)
     $formElement = preg_replace('/<label for=[^>]*>([^<]*)<\\/label>/s', '<label class="inlinelabel">$1</label>', $formElement);
     // add label class
     $formElement = preg_replace('/(onclick="BrowseServer[^\\"]+\\")/', 'class="browseimage ' . $fieldClass . '"', $formElement, 1);
     // remove imagebrowser onclick script
     $formElement = preg_replace('/(onclick="BrowseFileServer[^\\"]+\\")/', 'class="browsefile ' . $fieldClass . '"', $formElement, 1);
     // remove filebrowser onclick script
     $formElement = str_replace('document.forms[\'mutate\'].elements[\'tv0\'].value=\'\';document.forms[\'mutate\'].elements[\'tv0\'].onblur(); return true;', '$j(this).prev(\'input\').val(\'\').trigger(\'change\');', $formElement);
     // change datepicker onclick script
     $formElement = preg_replace('/(<script.*?DatePicker.*?script>)/s', '', $formElement);
     // remove datepicker script
     $formElement = preg_replace('/( onmouseover=\\"[^\\"]+\\")/', '', $formElement);
     // delete onmouseover attribute
     $formElement = preg_replace('/( onmouseout=\\"[^\\"]+\\")/', '', $formElement);
     // delete onmouseout attribute
     $formElement = str_replace(array('&nbsp;'), ' ', $formElement);
     // change whitespace
     $formElement = str_replace(array('style="width:100%;"', 'style="width:100%"', ' width="100%"', '  width="100"', '<br />', 'onchange="documentDirty=true;"', " checked='checked'"), array(''), $formElement);
     // remove unused atrributes and tags
     return trim($formElement);
 }