⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 httpform.cxx

📁 mgcp协议源代码。支持多种编码:g711
💻 CXX
📖 第 1 页 / 共 5 页
字号:
{  value = toupper(val[0]) == 'T' || toupper(val[0]) == 'y' ||          val.AsInteger() != 0 || val.Find("TRUE") != P_MAX_INDEX;}PString PHTTPBooleanField::GetValue(BOOL dflt) const{  return ((dflt ? initialValue : value) ? "True" : "False");}void PHTTPBooleanField::LoadFromConfig(PConfig & cfg){  PString section, key;  switch (SplitConfigKey(fullName, section, key)) {    case 1 :      value = cfg.GetBoolean(key, initialValue);      break;    case 2 :      value = cfg.GetBoolean(section, key, initialValue);  }}void PHTTPBooleanField::SaveToConfig(PConfig & cfg) const{  PString section, key;  switch (SplitConfigKey(fullName, section, key)) {    case 1 :      cfg.SetBoolean(key, value);      break;    case 2 :      cfg.SetBoolean(section, key, value);  }}//////////////////////////////////////////////////////////////////////////////// PHTTPRadioFieldPHTTPRadioField::PHTTPRadioField(const char * name,                                 const PStringArray & valueArray,                                 PINDEX initVal,                                 const char * help)  : PHTTPField(name, NULL, help),    values(valueArray),    titles(valueArray),    value(valueArray[initVal]),    initialValue(value){}PHTTPRadioField::PHTTPRadioField(const char * name,                                 const PStringArray & valueArray,                                 const PStringArray & titleArray,                                 PINDEX initVal,                                 const char * help)  : PHTTPField(name, NULL, help),    values(valueArray),    titles(titleArray),    value(valueArray[initVal]),    initialValue(value){}PHTTPRadioField::PHTTPRadioField(const char * name,                                 PINDEX count,                                 const char * const * valueStrings,                                 PINDEX initVal,                                 const char * help)  : PHTTPField(name, NULL, help),    values(count, valueStrings),    titles(count, valueStrings),    value(valueStrings[initVal]),    initialValue(value){}PHTTPRadioField::PHTTPRadioField(const char * name,                                 PINDEX count,                                 const char * const * valueStrings,                                 const char * const * titleStrings,                                 PINDEX initVal,                                 const char * help)  : PHTTPField(name, NULL, help),    values(count, valueStrings),    titles(count, titleStrings),    value(valueStrings[initVal]),    initialValue(value){}PHTTPRadioField::PHTTPRadioField(const char * name,                                 const char * groupTitle,                                 const PStringArray & valueArray,                                 PINDEX initVal,                                 const char * help)  : PHTTPField(name, groupTitle, help),    values(valueArray),    titles(valueArray),    value(valueArray[initVal]),    initialValue(value){}PHTTPRadioField::PHTTPRadioField(const char * name,                                 const char * groupTitle,                                 const PStringArray & valueArray,                                 const PStringArray & titleArray,                                 PINDEX initVal,                                 const char * help)  : PHTTPField(name, groupTitle, help),    values(valueArray),    titles(titleArray),    value(valueArray[initVal]),    initialValue(value){}PHTTPRadioField::PHTTPRadioField(const char * name,                                 const char * groupTitle,                                 PINDEX count,                                 const char * const * valueStrings,                                 PINDEX initVal,                                 const char * help)  : PHTTPField(name, groupTitle, help),    values(count, valueStrings),    titles(count, valueStrings),    value(valueStrings[initVal]),    initialValue(value){}PHTTPRadioField::PHTTPRadioField(const char * name,                                 const char * groupTitle,                                 PINDEX count,                                 const char * const * valueStrings,                                 const char * const * titleStrings,                                 PINDEX initVal,                                 const char * help)  : PHTTPField(name, groupTitle, help),    values(count, valueStrings),    titles(count, titleStrings),    value(valueStrings[initVal]),    initialValue(value){}PHTTPField * PHTTPRadioField::NewField() const{  return new PHTTPRadioField(*this);}void PHTTPRadioField::GetHTMLTag(PHTML & html) const{  for (PINDEX i = 0; i < values.GetSize(); i++)    html << PHTML::RadioButton(fullName, values[i],                        values[i] == value ? PHTML::Checked : PHTML::UnChecked)         << titles[i]         << PHTML::BreakLine();}PString PHTTPRadioField::GetHTMLInput(const PString & input) const{  PString inval;  PINDEX before, after;  if (FindInputValue(input, before, after))    inval = input(before+1, after-1);  else    inval = baseName;  if (inval != value)    return input;  return "<input checked" + input.Mid(6);}PString PHTTPRadioField::GetValue(BOOL dflt) const{  if (dflt)    return initialValue;  else    return value;}void PHTTPRadioField::SetValue(const PString & newVal){  value = newVal;}//////////////////////////////////////////////////////////////////////////////// PHTTPSelectFieldPHTTPSelectField::PHTTPSelectField(const char * name,                                   const PStringArray & valueArray,                                   PINDEX initVal,                                   const char * help)  : PHTTPField(name, NULL, help),    values(valueArray){  initialValue = initVal;  if (initVal < values.GetSize())    value = values[initVal];}PHTTPSelectField::PHTTPSelectField(const char * name,                                   PINDEX count,                                   const char * const * valueStrings,                                   PINDEX initVal,                                   const char * help)  : PHTTPField(name, NULL, help),    values(count, valueStrings){  initialValue = initVal;  if (initVal < count)    value = values[initVal];}PHTTPSelectField::PHTTPSelectField(const char * name,                                   const char * title,                                   const PStringArray & valueArray,                                   PINDEX initVal,                                   const char * help)  : PHTTPField(name, title, help),    values(valueArray){  initialValue = initVal;  if (initVal < values.GetSize())    value = values[initVal];}PHTTPSelectField::PHTTPSelectField(const char * name,                                   const char * title,                                   PINDEX count,                                   const char * const * valueStrings,                                   PINDEX initVal,                                   const char * help)  : PHTTPField(name, title, help),    values(count, valueStrings){  initialValue = initVal;  if (initVal < values.GetSize())    value = values[initVal];}PHTTPField * PHTTPSelectField::NewField() const{  return new PHTTPSelectField(baseName, title, values, initialValue, help);}void PHTTPSelectField::GetHTMLTag(PHTML & html) const{  html << PHTML::Select(fullName);  for (PINDEX i = 0; i < values.GetSize(); i++)    html << PHTML::Option(values[i] == value ? PHTML::Selected : PHTML::NotSelected)         << values[i];  html << PHTML::Select();}PString PHTTPSelectField::GetValue(BOOL dflt) const{  if (dflt)    if (initialValue < values.GetSize())      return values[initialValue];    else      return PString();  else    return value;}void PHTTPSelectField::SetValue(const PString & newVal){  value = newVal;}//////////////////////////////////////////////////////////////////////////////// PHTTPFormPHTTPForm::PHTTPForm(const PURL & url)  : PHTTPString(url),    fields(""){}PHTTPForm::PHTTPForm(const PURL & url, const PHTTPAuthority & auth)  : PHTTPString(url, auth),    fields(""){}PHTTPForm::PHTTPForm(const PURL & url, const PString & html)  : PHTTPString(url, html),    fields(""){}PHTTPForm::PHTTPForm(const PURL & url,                     const PString & html,                     const PHTTPAuthority & auth)  : PHTTPString(url, html, auth),    fields(""){}static BOOL FindSpliceAccepted(const PString & text,                              PINDEX offset,                              PINDEX & pos,                              PINDEX & len,                              PINDEX & start,                              PINDEX & finish){  static PRegularExpression Accepted("<?!--#form[ \t\r\n]+accepted[ \t\r\n]*-->?",                                     PRegularExpression::Extended|PRegularExpression::IgnoreCase);  return FindSpliceBlock(Accepted, text, offset, pos, len, start, finish);}static BOOL FindSpliceErrors(const PString & text,                            PINDEX offset,                            PINDEX & pos,                            PINDEX & len,                            PINDEX & start,                            PINDEX & finish){  static PRegularExpression Errors("<?!--#form[ \t\r\n]+errors[ \t\r\n]*-->?",                                     PRegularExpression::Extended|PRegularExpression::IgnoreCase);  return FindSpliceBlock(Errors, text, offset, pos, len, start, finish);}static BOOL FindSpliceField(const PRegularExpression & startExpr,                            const PRegularExpression & endExpr,                            const PString & text,                            PINDEX offset,                            const PHTTPField & rootField,                            PINDEX & pos,                            PINDEX & len,                            PINDEX & start,                            PINDEX & finish,                            const PHTTPField * & field){  field = NULL;  if (!FindSpliceBlock(startExpr, endExpr, text, offset, pos, len, start, finish))    return FALSE;  PINDEX endBlock = start != finish ? (start-1) : (pos+len-1);  PINDEX namePos, nameEnd;  if (FindSpliceName(text, pos, endBlock, namePos, nameEnd))    field = rootField.LocateName(text(namePos, nameEnd));  return TRUE;}void PHTTPForm::OnLoadedText(PHTTPRequest & request, PString & text){  PINDEX pos, len, start, finish;  const PHTTPField * field;  // Remove the subsections for POST command  pos = 0;  while (FindSpliceAccepted(text, pos, pos, len, start, finish))    text.Delete(pos, len);  pos = 0;  while (FindSpliceErrors(text, pos, pos, len, start, finish))    text.Delete(pos, len);  // See if are a subform, set root composite field accordingly  PString prefix = request.url.GetQueryVars()("subformprefix");  if (!prefix) {    static PRegularExpression SubFormPrefix("<?!--#form[ \t\r\n]+subformprefix[ \t\r\n]*-->?",                                            PRegularExpression::Extended|PRegularExpression::IgnoreCase);    while (text.FindRegEx(SubFormPrefix, pos, len))      text.Splice("subformprefix=" +                  PURL::TranslateString(prefix, PURL::QueryTranslation),                  pos, len);    field = fields.LocateName(prefix);    if (field != NULL) {      finish = P_MAX_INDEX;      field->ExpandFieldNames(text, 0, finish);    }  }  // Locate <!--#form array name--> macros and expand them  static PRegularExpression ArrayRegEx("<!--#form[ \t\r\n]+array[ \t\r\n]+[^-]+-->",                                       PRegularExpression::Extended|PRegularExpression::IgnoreCase);  static PRegularExpression EndBlock("<?!--#form[ \t\r\n]+end[ \t\r\n]+[^-]+-->?",                                     PRegularExpression::Extended|PRegularExpression::IgnoreCase);  pos = len = 0;  while (FindSpliceField(ArrayRegEx, EndBlock, text, pos+len, fields, pos, len, start, finish, field)) {    if (start != finish && field != NULL)      field->ExpandFieldNames(text, start, finish);  }  // Have now expanded all field names to be fully qualified  static PRegularExpression HTMLRegEx("<!--#form[ \t\r\n]+html[ \t\r\n]+[^-]+-->",                                      PRegularExpression::Extended|PRegularExpression::IgnoreCase);  while (FindSpliceField(HTMLRegEx, "", text, 0, fields, pos, len, start, finish, field)) {    if (field != NULL) {      PHTML html(PHTML::InForm);      field->GetHTMLTag(html);      text.Splice(html, pos, len);    }  }  pos = len = 0;  static PRegularExpression ValueRegEx("<!--#form[ \t\r\n]+value[ \t\r\n]+[^-]+-->",                                       PRegularExpression::Extended|PRegularExpression::IgnoreCase);  while (FindSpliceField(ValueRegEx, "", text, pos+len, fields, pos, len, start, finish, field)) {    if (field != NULL)      text.Splice(field->GetValue(), pos, len);  }  pos = len = 0;  static PRegularExpression InputRegEx("<input[ \t\r\n][^>]*name[ \t\r\n]*=[ \t\r\n]*\"[^\"]*\"[^>]*>",                                       PRegularExpression::Extended|PRegularExpression::IgnoreCase);  while (FindSpliceField(InputRegEx, "", text, pos+len, fields, pos, len, start, finish, field)) {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -