<%@ Page Language="C#" MasterPageFile="~/Admin/MainPage.Master" AutoEventWireup="true" CodeBehind="BaseSetting.aspx.cs" Inherits="PPFOR.Admin.Sys.WebConfig.Config.BaseSetting" Title="基本设置" %>
<asp:Content ID="Content1" ContentPlaceHolderID="PPFOR_mainContent" runat="server">
<script type="text/javascript">
function $(id){
    var obj=false;
    if(typeof(id)=='string'){
        obj= (document.all ? document.all[id] : document.getElementById(id))||false;
    }
    return obj;
}
function readable(checked,targetid){
    var target=$(targetid);    
    checked=checked||false;
    if(target)
    {
        target.readOnly=checked;
        if(!checked)
        {
            target.select();
        }
    }
}
function changePageSlipt(checked,targetid){
    checked=checked||false;
    readable(!checked,targetid);
    var target=$(targetid); 
    if(target){
        if(!checked){
            target.setAttribute('defaultValue',target.value);
            target.value='';
        }else{
            target.value=target.getAttribute('defaultValue')||'2001';
        }
    }
}
function showOrHideRegHelp(o)
{
    var obj=$('regHelpDiv'); 
    if(obj && o!=null){      
        if(obj.style.display=='none'){
            obj.style.display='';
            o.innerHTML='隐藏正则表达式教程';
        }else{
            obj.style.display='none';
            o.innerHTML='显示正规表达式教程';
        }
    }
}
</script>
<form id="form1" action="BaseSetting.aspx" method="post" runat="server">
<table width="100%" cellpadding="0" cellspacing="0" border="0" class="fortable">
    <tr>
        <td colspan="4" style="background-color: #f2f2f2" align="left">&nbsp;&nbsp;会员注册选项（适用范围：会员前台注册时）</td>
    </tr> 
    <tr>
        <td class="rtitle">会员注册项填写：</td> 
        <td colspan="3">
            <asp:CheckBox ID="PPFOR_memberFieldStatus" runat="server" Text="开启"></asp:CheckBox>            
        </td>        
    </tr>
     <tr>
        <td colspan="4" style="background-color: #f2f2f2" align="left">&nbsp;&nbsp;过滤字符（适用范围：评论与回复）</td>
    </tr>   
    <tr>
        <td class="rtitle">过滤字符：</td>
        <td colspan="3">
            <asp:TextBox ID="PPFOR_filterText" runat="server" MaxLength="65535" Width="97%"></asp:TextBox>
            <br /><span style="color:Gray">前台提交时过滤掉的字符。过滤字符以“||”分隔，不区分大小写，可使用简单的正规表达式</span>
            &nbsp;[<span onclick="showOrHideRegHelp(this);" style="cursor:pointer; color:Blue;">显示正规表达式教程</span>]
            <div id="regHelpDiv" style=" width:99%; white-space:normal; display:none; border:1px #CCCCCC solid;">
                <p>\<br />
                  将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如，'n' 匹配字符 &quot;n&quot;。'\n' 匹配一个换行符。序列 '\\' 匹配 &quot;\&quot; 而 &quot;\(&quot; 则匹配 &quot;(&quot;。</p>
                <p>^<br />
                  匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性，^ 也匹配 '\n' 或 '\r' 之后的位置。</p>
                <p>$<br />
                  匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性，$ 也匹配 '\n' 或 '\r' 之前的位置。</p>
                <p>*<br />
                  匹配前面的子表达式零次或多次。例如，zo* 能匹配 &quot;z&quot; 以及 &quot;zoo&quot;。* 等价于{0,}。</p>
                <p>+<br />
                  匹配前面的子表达式一次或多次。例如，'zo+' 能匹配 &quot;zo&quot; 以及 &quot;zoo&quot;，但不能匹配 &quot;z&quot;。+ 等价于 {1,}。</p>
                <p>?<br />
                  匹配前面的子表达式零次或一次。例如，&quot;do(es)?&quot; 可以匹配 &quot;do&quot; 或 &quot;does&quot; 中的&quot;do&quot; 。? 等价于 {0,1}。</p>
                <p>{n}<br />
                  n 是一个非负整数。匹配确定的 n 次。例如，'o{2}' 不能匹配 &quot;Bob&quot; 中的 'o'，但是能匹配 &quot;food&quot; 中的两个 o。</p>
                <p>{n,}<br />
                  n 是一个非负整数。至少匹配n 次。例如，'o{2,}' 不能匹配 &quot;Bob&quot; 中的 'o'，但能匹配 &quot;foooood&quot; 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。</p>
                <p>{n,m}<br />
                  m 和 n 均为非负整数，其中n &lt;= m。最少匹配 n 次且最多匹配 m 次。例如，&quot;o{1,3}&quot; 将匹配 &quot;fooooood&quot; 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。</p>
                <p>?<br />
                  当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时，匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串，而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如，对于字符串 &quot;oooo&quot;，'o+?' 将匹配单个 &quot;o&quot;，而 'o+' 将匹配所有 'o'。</p>
                <p>.<br />
                  匹配除 &quot;\n&quot; 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符，请使用象 '[.\n]' 的模式。</p>
                <p>(pattern)<br />
                  匹配 pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到，在VBScript 中使用 SubMatches 集合，在JScript 中则使用 $0…$9 属性。要匹配圆括号字符，请使用 '\(' 或 '\)'。</p>
                <p>(?:pattern)<br />
                  匹配 pattern 但不获取匹配结果，也就是说这是一个非获取匹配，不进行存储供以后使用。这在使用 &quot;或&quot; 字符 (|) 来组合一个模式的各个部分是很有用。例如， 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。</p>
                <p>(?=pattern)<br />
                  正向预查，在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配，也就是说，该匹配不需要获取供以后使用。例如，'Windows (?=95|98|NT|2000)' 能匹配 &quot;Windows 2000&quot; 中的 &quot;Windows&quot; ，但不能匹配 &quot;Windows 3.1&quot; 中的 &quot;Windows&quot;。预查不消耗字符，也就是说，在一个匹配发生后，在最后一次匹配之后立即开始下一次匹配的搜索，而不是从包含预查的字符之后开始。</p>
                <p>(?!pattern)<br />
                  负向预查，在任何不匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配，也就是说，该匹配不需要获取供以后使用。例如'Windows (?!95|98|NT|2000)' 能匹配 &quot;Windows 3.1&quot; 中的 &quot;Windows&quot;，但不能匹配 &quot;Windows 2000&quot; 中的 &quot;Windows&quot;。预查不消耗字符，也就是说，在一个匹配发生后，在最后一次匹配之后立即开始下一次匹配的搜索，而不是从包含预查的字符之后开始</p>
                <p>x|y<br />
                  匹配 x 或 y。例如，'z|food' 能匹配 &quot;z&quot; 或 &quot;food&quot;。'(z|f)ood' 则匹配 &quot;zood&quot; 或 &quot;food&quot;。</p>
                <p>[xyz]<br />
                  字符集合。匹配所包含的任意一个字符。例如， '[abc]' 可以匹配 &quot;plain&quot; 中的 'a'。</p>
                <p>[^xyz]<br />
                  负值字符集合。匹配未包含的任意字符。例如， '[^abc]' 可以匹配 &quot;plain&quot; 中的'p'。</p>
                <p>[a-z]<br />
                  字符范围。匹配指定范围内的任意字符。例如，'[a-z]' 可以匹配 'a' 到 'z' 范围内的任意小写字母字符。</p>
                <p>[^a-z]<br />
                  负值字符范围。匹配任何不在指定范围内的任意字符。例如，'[^a-z]' 可以匹配任何不在 'a' 到 'z' 范围内的任意字符。</p>
                <p>\b<br />
                  匹配一个单词边界，也就是指单词和空格间的位置。例如， 'er\b' 可以匹配&quot;never&quot; 中的 'er'，但不能匹配 &quot;verb&quot; 中的 'er'。</p>
                <p>\B<br />
                  匹配非单词边界。'er\B' 能匹配 &quot;verb&quot; 中的 'er'，但不能匹配 &quot;never&quot; 中的 'er'。</p>
                <p>\cx<br />
                  匹配由 x 指明的控制字符。例如， \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则，将 c 视为一个原义的 'c' 字符。</p>
                <p>\d<br />
                  匹配一个数字字符。等价于 [0-9]。</p>
                <p>\D<br />
                  匹配一个非数字字符。等价于 [^0-9]。</p>
                <p>\f<br />
                  匹配一个换页符。等价于 \x0c 和 \cL。</p>
                <p>\n<br />
                  匹配一个换行符。等价于 \x0a 和 \cJ。</p>
                <p>\r<br />
                  匹配一个回车符。等价于 \x0d 和 \cM。</p>
                <p>\s<br />
                  匹配任何空白字符，包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。</p>
                <p>\S<br />
                  匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。</p>
                <p>\t<br />
                  匹配一个制表符。等价于 \x09 和 \cI。</p>
                <p>\v<br />
                  匹配一个垂直制表符。等价于 \x0b 和 \cK。</p>
                <p>\w<br />
                  匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'。</p>
                <p>\W<br />
                  匹配任何非单词字符。等价于 '[^A-Za-z0-9_]'。</p>
                <p>\xn<br />
                  匹配 n，其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如，'\x41' 匹配 &quot;A&quot;。'\x041' 则等价于 '\x04' &amp; &quot;1&quot;。正则表达式中可以使用 ASCII 编码。.</p>
                <p>\num<br />
                  匹配 num，其中 num 是一个正整数。对所获取的匹配的引用。例如，'(.)\1' 匹配两个连续的相同字符。</p>
                <p>\n<br />
                  标识一个八进制转义值或一个向后引用。如果 \n 之前至少 n 个获取的子表达式，则 n 为向后引用。否则，如果 n 为八进制数字 (0-7)，则 n 为一个八进制转义值。</p>
                <p>\nm<br />
                  标识一个八进制转义值或一个向后引用。如果 \nm 之前至少有 nm 个获得子表达式，则 nm 为向后引用。如果 \nm 之前至少有 n 个获取，则 n 为一个后跟文字 m 的向后引用。如果前面的条件都不满足，若 n 和 m 均为八进制数字 (0-7)，则 \nm 将匹配八进制转义值 nm。</p>
                <p>\nml<br />
                  如果 n 为八进制数字 (0-3)，且 m 和 l 均为八进制数字 (0-7)，则匹配八进制转义值 nml。</p>
                <p>\un<br />
                  匹配 n，其中 n 是一个用四个十六进制数字表示的 Unicode 字符。例如， \u00A9 匹配版权符号 (?)。</p>
            </div>
        </td>
    </tr>
    <tr>
        <td class="rtitle">替换字符：</td>
        <td colspan="3">
            <asp:TextBox ID="PPFOR_replaceText" runat="server" Text="*" MaxLength="10" Width="150px"></asp:TextBox>  
            <span style="color:Gray">替换被过滤掉的字符</span>         
        </td>
    </tr>
     <tr>
        <td colspan="4" style="background-color: #f2f2f2" align="left">&nbsp;&nbsp;内容分页（适用范围：新闻、产品、图片、单页面、下载5个模块的详细页）</td>
    </tr>
    <tr>
        <td class="rtitle">是否启用分页：</td>
        <td class="rcontent">
            <asp:CheckBox ID="PPFOR_pageSplitStatus" runat="server" Text="启用分页"></asp:CheckBox>            
        </td>
        <td class="rtitle">分页长度：</td>
        <td class="rcontent">
            <asp:TextBox ID="PPFOR_pageSplitLength" runat="server" Text="2001" MaxLength="10" Width="150px"></asp:TextBox>
            <asp:RangeValidator ID="RangeValidator1" ControlToValidate="PPFOR_pageSplitLength" runat="server" Display="Dynamic" SetFocusOnError="true" MinimumValue="1000" MaximumValue="2147483647" Type="Integer"><br />分页长度必须为1000至2147483647之间的整数</asp:RangeValidator>
        </td>        
    </tr>
     <tr>
        <td colspan="4" style="background-color: #f2f2f2" align="left">&nbsp;&nbsp;省略符号（适用范围：标签中的文字有限制长度时）</td>
    </tr>
     <tr>
        <td class="rtitle">省略符号：</td> 
        <td colspan="3">
            <asp:TextBox ID="PPFOR_ellipsis" runat="server" Text=".." MaxLength="5" Width="150px"></asp:TextBox>            
        </td>        
    </tr>
     <tr>
        <td colspan="4" style="background-color: #f2f2f2" align="left">&nbsp;&nbsp;邮件通知（不发送该项邮件通知则设为空值）</td>
    </tr>
      <tr>
        <td class="rtitle">会员邮件通知地址：</td> 
        <td colspan="3">
            <asp:TextBox ID="PPFOR_memberEmail" runat="server" Text="" MaxLength="255" Width="97%"></asp:TextBox>            
            <asp:RegularExpressionValidator ID="RegularExpressionValidator2" runat="server" Display="Dynamic" SetFocusOnError="true" ControlToValidate="PPFOR_orderEmail" ValidationExpression="^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"><br />电子邮箱地址格式不对</asp:RegularExpressionValidator>                                 
        </td>        
    </tr>
    <tr>
        <td class="rtitle">订单邮件通知地址：</td> 
        <td colspan="3">
            <asp:TextBox ID="PPFOR_orderEmail" runat="server" Text="" MaxLength="255" Width="97%"></asp:TextBox>            
            <asp:RegularExpressionValidator ID="RegularExpressionValidator4" runat="server" Display="Dynamic" SetFocusOnError="true" ControlToValidate="PPFOR_orderEmail" ValidationExpression="^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"><br />电子邮箱地址格式不对</asp:RegularExpressionValidator>                                 
        </td>        
    </tr>
    <tr>
        <td class="rtitle">评论组默认邮件通知地址：</td> 
        <td colspan="3">
            <asp:TextBox ID="PPFOR_commentEmail" runat="server" Text="" MaxLength="255" Width="97%"></asp:TextBox>            
            <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" Display="Dynamic" SetFocusOnError="true" ControlToValidate="PPFOR_commentEmail" ValidationExpression="^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"><br />电子邮箱地址格式不对</asp:RegularExpressionValidator>                                 
        </td>        
    </tr>
    <tr>
        <td colspan="2" align="center" style="height:30px; display:none">
            <asp:Button ID="PPFOR_saveSetting" runat="server" CssClass="inputbutton" Text="保存设置" OnClick="PPFOR_saveSettingClick" />
            <input type="reset" id="reset1" value="重置" class="inputbutton" onmouseover="this.className='inputbutton_hover'" onmouseout="this.className='inputbutton'"/><br />            
            <script type="text/javascript">              
              addButtonArray("<%= PPFOR_saveSetting.ClientID %>","reset1");
            </script> 
        </td>
    </tr> 
</table> 
</form>        
</asp:Content>
