OSDN Git Service

index のrecent表示がデフォルトでうまくいかない事態になりました
authoryamat0jp <terukohietori@gmail.com>
Fri, 10 Jan 2020 14:04:34 +0000 (23:04 +0900)
committeryamat0jp <terukohietori@gmail.com>
Fri, 10 Jan 2020 14:04:34 +0000 (23:04 +0900)
Unit1.dfm
WebModuleUnit1.pas

index 3cfb06d..9fa646d 100644 (file)
--- a/Unit1.dfm
+++ b/Unit1.dfm
@@ -33,7 +33,7 @@ object DataModule1: TDataModule1
     Top = 24
   end
   object FDTable2: TFDTable
-    IndexFieldNames = 'DBNUM;NUMBER'
+    IndexFieldNames = 'DBNUM;NUMBER:DN'
     MasterSource = DataSource1
     MasterFields = 'DBNUM'
     Connection = FDConnection1
index 28c4f58..fb49fbd 100644 (file)
@@ -108,6 +108,8 @@ type
     ss: TStringList;
     tagstr: string;
     procedure pages(count: Integer; var page: Integer);
+    function isInfo: Boolean;
+    function loginCheck: Boolean;
     function hash(str: string): string;
     function mente: Boolean;
     function detail(ts, pid: string): string;
@@ -138,8 +140,6 @@ begin
   else if (TagString = 'mente') and
     (DataModule1.FDTable3.FieldByName('mente').AsBoolean = true) then
     ReplaceText := 'checked'
-  else if TagString = 'password' then
-    ReplaceText := Request.CookieFields.Values['user']
   else if TagString = 'database' then
     ReplaceText := Request.QueryFields.Values['db'];
 end;
@@ -289,7 +289,8 @@ begin
       end;
     end
     else
-      ReplaceText := '<p style=color:yellow;background-color:aqua>\82²\95ñ\8d\90\82 \82è\82ª\82Æ\82¤\82²\82´\82¢\82Ü\82·.';
+      ReplaceText :=
+        '<p style=color:yellow;background-color:aqua>\82²\95ñ\8d\90\82 \82è\82ª\82Æ\82¤\82²\82´\82¢\82Ü\82·.';
 end;
 
 procedure TWebModule1.indexHTMLTag(Sender: TObject; Tag: TTag;
@@ -319,13 +320,18 @@ begin
   else if TagString = 'footer' then
     ReplaceText := footer.Content
   else if TagString = 'header' then
-  begin
-    i := DataModule1.FDTable3.FieldByName('count').AsInteger;
-    if 10 * i <= DataModule1.FDTable2.RecordCount then
-      ReplaceText := '<h1>\82±\82ê\88È\8fã\93\8a\8de\82Å\82«\82Ü\82¹\82ñ.</h1>'
+    if (DataModule1.FDTable1.FieldByName('dbnum')
+      .AsInteger = DataModule1.FDTable3.FieldByName('info').AsInteger) and
+      (loginCheck = false) then
+      ReplaceText := '<h1 style=text-align:center>\8aÇ\97\9d\90l\82©\82ç\82¨\92m\82ç\82¹\82ª\82 \82è\82Ü\82·.</h1>'
     else
-      ReplaceText := header.Content;
-  end
+    begin
+      i := DataModule1.FDTable3.FieldByName('count').AsInteger;
+      if 10 * i <= DataModule1.FDTable2.RecordCount then
+        ReplaceText := '<h1>\82±\82ê\88È\8fã\93\8a\8de\82Å\82«\82Ü\82¹\82ñ.</h1>'
+      else
+        ReplaceText := header.Content;
+    end
   else if (TagString = 'css') or (TagString = 'js') then
     ReplaceText := detail(TagString, TagParams.Values['id'])
   else if TagString = 'dbnum' then
@@ -334,6 +340,12 @@ begin
     ReplaceText := DataModule1.FDTable1.FieldByName('database').AsString;
 end;
 
+function TWebModule1.isInfo: Boolean;
+begin
+  result := DataModule1.FDTable1.FieldByName('dbnum')
+    .AsInteger = DataModule1.FDTable3.FieldByName('info').AsInteger;
+end;
+
 procedure TWebModule1.itemsHTMLTag(Sender: TObject; Tag: TTag;
   const TagString: string; TagParams: TStrings; var ReplaceText: string);
 var
@@ -371,6 +383,12 @@ begin
   end;
 end;
 
+function TWebModule1.loginCheck: Boolean;
+begin
+  result := hash(Request.CookieFields.Values['user'])
+    = DataModule1.FDTable3.FieldByName('password').AsString;
+end;
+
 procedure TWebModule1.loginHTMLTag(Sender: TObject; Tag: TTag;
   const TagString: string; TagParams: TStrings; var ReplaceText: string);
 begin
@@ -649,8 +667,7 @@ var
   i: Integer;
 begin
   s := Request.CookieFields.Values['user'];
-  if (s = '') or (hash(s) <> DataModule1.FDTable3.FieldByName('password')
-    .AsString) then
+  if (s = '') or (loginCheck = false) then
   begin
     WebModule1loginAction(nil, Request, Response, Handled);
     Exit;
@@ -785,7 +802,7 @@ end;
 procedure TWebModule1.WebModule1helpAction(Sender: TObject;
   Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
 var
-  i, j, k: Integer;
+  k: Integer;
   s: string;
 begin
   Response.ContentType := 'text/html;charset=utf-8';
@@ -828,18 +845,23 @@ end;
 procedure TWebModule1.WebModule1indexpageAction(Sender: TObject;
   Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
 var
-  int: Integer;
+  i: Integer;
   s: string;
 begin
   s := Request.QueryFields.Values['db'];
   if s <> '' then
     DataModule1.FDTable1.Locate('dbnum', s, []);
-  int := StrToIntDef(Request.QueryFields.Values['num'], -1);
-  pages(DataModule1.FDTable2.RecordCount, int);
-  index.Tag := int;
+  i := StrToIntDef(Request.QueryFields.Values['num'], -1);
+  pages(DataModule1.FDTable2.RecordCount, i);
+  index.Tag := i;
   tagstr := '/index';
   Self.Tag := Integer(@tagstr);
   Response.ContentType := 'text/html; charset="utf-8"';
+  s := DataModule1.FDTable2.IndexFieldNames;
+  if isInfo = true then
+    DataModule1.FDTable2.IndexFieldNames := Copy(s, 1, Length(s) - 2) + 'DN'
+  else
+    DataModule1.FDTable2.IndexFieldNames := Copy(s, 1, Length(s) - 2) + 'AN';
   if mente = false then
     Response.Content := index.Content;
 end;
@@ -944,8 +966,7 @@ var
   s: string;
   i: Integer;
 begin
-  if hash(Request.CookieFields.Values['user']) <>
-    DataModule1.FDTable3.FieldByName('password').AsString then
+  if loginCheck = false then
   begin
     with DataModule1.FDTable1 do
       if Locate('database', 'master') = false then
@@ -992,6 +1013,7 @@ procedure TWebModule1.WebModule1registAction(Sender: TObject;
 var
   number, i: Integer;
   title, na, raw, pass, kotoba, error: string;
+  s: string;
   comment: TStringList;
   x: Boolean;
   function scan(Text: string): string;
@@ -1024,7 +1046,10 @@ begin
     error := '<section style=color:red><p>\8d\87\8c¾\97t\82ª\82¿\82ª\82¢\82Ü\82·.';
   with DataModule1.FDTable2 do
   begin
-    Last;
+    if isInfo = true then
+      First
+    else
+      Last;
     number := FieldByName('number').AsInteger + 1;
   end;
   with Request.ContentFields do
@@ -1077,9 +1102,20 @@ begin
     end
     else
     begin
+      s := DataModule1.FDTable2.IndexFieldNames;
+      if s[Length(s)] = 'N' then
+      begin
+        s := Copy(s, 1, Length(s) - 3);
+        DataModule1.FDTable2.IndexFieldNames := s;
+      end;
       i := DataModule1.FDTable1.FieldByName('dbnum').AsInteger;
       DataModule1.FDTable2.AppendRecord([i, number, title, na, comment.Text,
         raw, Now, pass]);
+      if isInfo = true then
+        s := s + ':DN'
+      else
+        s := s + ':AN';
+      DataModule1.FDTable2.IndexFieldNames := s;
       Response.SendRedirect('index?db=' + i.ToString + '#article');
       Exit;
     end;