Skip to Content.
Sympa Menu

cacert-devel - Patch request: Bug #1010

Subject: CAcert Code Development list.

List archive

Patch request: Bug #1010


Chronological Thread 
  • From: Michael Tänzer <michael.taenzer AT cacert.org>
  • To: "critical-admin AT cacert.org" <critical-admin AT cacert.org>
  • Cc: cacert-devel AT lists.cacert.org, Benny Baumann <benbe AT cacert.org>, Marcus Mängel <inopiae AT cacert.org>, Eva Stöwe <eva.stoewe AT cacert.org>
  • Subject: Patch request: Bug #1010
  • Date: Wed, 20 Nov 2013 15:20:51 +0100
  • Openpgp: id=9940BEF1

Hi folks,

We have a fix for https://bugs.cacert.org/view.php?id=1010
"Reorder the view on organisation certificates"

The fix was reviewed by Benny Baumann (BenBE) and me (NEOatNHNG) and
tested by Eva Stöwe (Eva) and Marcus Mängel (INOPIAE).

Diff is attached. Please also run the locale makefile so that our
translators see the new strings (if present) on
https://translations.cacert.org and new translations get imported into
the system.

Changed files:
includes/account.php
pages/account/18.php
pages/account/22.php


--
Have a nice day,
Michael Tänzer
diff --git a/includes/account.php b/includes/account.php
index 1a381b8..ff9da77 100644
--- a/includes/account.php
+++ b/includes/account.php
@@ -1552,6 +1552,7 @@
 
 			$query = "insert into `orgemailcerts` set
 						`CN`='$defaultemail',
+						`ou`='".$_SESSION['_config']['OU']."',
 						`keytype`='NS',
 						`orgid`='".$org['orgid']."',
 						`created`=FROM_UNIXTIME(UNIX_TIMESTAMP()),
@@ -1642,6 +1643,7 @@
 
 			$query = "insert into `orgemailcerts` set
 						`CN`='$defaultemail',
+						`ou`='".$_SESSION['_config']['OU']."',
 						`keytype`='" . sanitizeHTML($_REQUEST['keytype']) . "',
 						`orgid`='".$org['orgid']."',
 						`created`=FROM_UNIXTIME(UNIX_TIMESTAMP()),
@@ -1717,6 +1719,7 @@
 				$query = "insert into `orgemailcerts` set
 						`orgid`='".$row['orgid']."',
 						`CN`='".$row['CN']."',
+						`ou`='".$row['ou']."',
 						`subject`='".$row['subject']."',
 						`keytype`='".$row['keytype']."',
 						`csr_name`='".$row['csr_name']."',
@@ -1833,6 +1836,21 @@
 		exit;
 	}
 
+	if($oldid == 18 && array_key_exists('filter',$_REQUEST) && $_REQUEST['filter']!= "")
+	{
+		$id=18;
+		$_SESSION['_config']['orgfilterid']=$_REQUEST['orgfilterid'];
+		$_SESSION['_config']['sorting']=$_REQUEST['sorting'];
+		$_SESSION['_config']['status']=$_REQUEST['status'];
+	}
+
+	if($oldid == 18 && array_key_exists('reset',$_REQUEST) && $_REQUEST['reset']!= "")
+	{
+		$id=18;
+		$_SESSION['_config']['orgfilterid']=0;
+		$_SESSION['_config']['sorting']=0;
+		$_SESSION['_config']['status']=0;
+	}
 
 	if($process != "" && $oldid == 20)
 	{
@@ -2189,6 +2207,22 @@
 		exit;
 	}
 
+	if($oldid == 22 && array_key_exists('filter',$_REQUEST) && $_REQUEST['filter']!= "")
+	{
+		$id=22;
+		$_SESSION['_config']['dorgfilterid']=$_REQUEST['dorgfilterid'];
+		$_SESSION['_config']['dsorting']=$_REQUEST['dsorting'];
+		$_SESSION['_config']['dstatus']=$_REQUEST['dstatus'];
+	}
+
+	if($oldid == 22 && array_key_exists('reset',$_REQUEST) && $_REQUEST['reset']!= "")
+	{
+		$id=22;
+		$_SESSION['_config']['dorgfilterid']=0;
+		$_SESSION['_config']['dsorting']=0;
+		$_SESSION['_config']['dstatus']=0;
+	}
+
 
 	if(($id == 24 || $oldid == 24 || $id == 25 || $oldid == 25 || $id == 26 || $oldid == 26 ||
 		$id == 27 || $oldid == 27 || $id == 28 || $oldid == 28 || $id == 29 || $oldid == 29 ||
diff --git a/pages/account/18.php b/pages/account/18.php
index 2fbb8b4..9ab13b2 100644
--- a/pages/account/18.php
+++ b/pages/account/18.php
@@ -14,62 +14,143 @@
     You should have received a copy of the GNU General Public License
     along with this program; if not, write to the Free Software
     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-*/ ?>
-<? $viewall=0; if(array_key_exists('viewall',$_REQUEST)) $viewall=intval($_REQUEST['viewall']); ?>
+*/
+
+$orgfilterid = array_key_exists('orgfilterid',$_SESSION['_config']) ? intval($_SESSION['_config']['orgfilterid']) : 0;
+$sorting = array_key_exists('sorting',$_SESSION['_config']) ? intval($_SESSION['_config']['sorting']) : 0;
+$status = array_key_exists('status',$_SESSION['_config']) ? intval($_SESSION['_config']['status']) : 0;
+?>
 <form method="post" action="account.php">
 <table align="center" valign="middle" border="0" cellspacing="0" cellpadding="0" class="wrapper">
   <tr>
-    <td colspan="8" class="title"><?=_("Client Certificates")?> - <a href="account.php?id=18&amp;viewall=<?=!$viewall?>"><?=_("View all certificates")?></a></td>
+    <td colspan="9" class="title"><?=_("Organisation Client Certificates")?> </td>
   </tr>
   <tr>
-    <td class="DataTD"><?=_("Renew/Revoke/Delete")?></td>
-    <td class="DataTD"><?=_("Status")?></td>
-    <td class="DataTD"><?=_("CommonName")?></td>
-	  <td class="DataTD"><?=_("SerialNumber")?></td>
-		<td class="DataTD"><?=_("Comment")?></td>
-    <td class="DataTD"><?=_("Revoked")?></td>
-    <td class="DataTD"><?=_("Expires")?></td>
+    <td colspan="9" class="title"><?=_("Filter/Sorting")?></td>
+  </tr>
+    <tr>
+      <td class="DataTD"><?=_("Organisation")?></td>
+      <td colspan="8" class="DataTD" >
+        <select name="orgfilterid">
+           <?=sprintf('<option value="%d"%s>%s</option>',0, 0 == $orgfilterid ? " selected" : "" ,_("All")) ?>
+<?  $query = "select `orginfo`.`O`, `orginfo`.`id`
+      from `org`, `orginfo`
+      where `org`.`memid`='".intval($_SESSION['profile']['id'])."' and `orginfo`.`id` = `org`.`orgid`
+      ORDER BY `orginfo`.`O` ";
+    $reso = mysql_query($query);
+    if(mysql_num_rows($reso) >= 1){
+      while($row = mysql_fetch_assoc($reso)){
+        printf('<option value="%d"%s>%s</option>',$row['id'], $row['id'] == $orgfilterid ? " selected" : "" , $row['O']);
+      }
+    }?>
+        </select>
+    </td>
+  </tr>
+  <tr>
+    <td class="DataTD"><?=_("Sorting")?></td>
+    <td colspan="8" class="DataTD" >
+      <select name="sorting">
+        <?=sprintf('<option value="%d"%s>%s</option>',0, 0 == $sorting ? " selected" : "" ,_("expire date (desc)")) ?>
+        <?=sprintf('<option value="%d"%s>%s</option>',1, 1 == $sorting ? " selected" : "" ,_("OU, expire date (desc)")) ?>
+        <?=sprintf('<option value="%d"%s>%s</option>',2, 2 == $sorting ? " selected" : "" ,_("Common name, expire date (desc)")) ?>
+      </select>
+    </td>
+  </tr>
+  <tr>
+    <td class="DataTD"><?=_("Certificate status")?></td>
+    <td colspan="8" class="DataTD" >
+      <select name="status">
+        <?=sprintf('<option value="%d"%s>%s</option>',0, 0 == $status ? " selected" : "" ,_("Current/Active")) ?>
+        <?=sprintf('<option value="%d"%s>%s</option>',1, 1 == $status ? " selected" : "" ,_("All")) ?>
+      </select>
+    </td>
+  </tr>
+  <tr>
+    <td class="DataTD" colspan="9"><input type="submit" name="reset" value="<?=_("Reset")?>" />&nbsp;&nbsp;&nbsp;&nbsp;
+      <input type="submit" name="filter" value="<?=_("Apply filter/sort")?>" /></td>
+  </tr>
+  <tr>
+    <td colspan="9" class="DataTD"> </td>
+  </tr>
 
 <?
-	$query = "select UNIX_TIMESTAMP(`oemail`.`created`) as `created`,
-			UNIX_TIMESTAMP(`oemail`.`expire`) - UNIX_TIMESTAMP() as `timeleft`,
-			UNIX_TIMESTAMP(`oemail`.`expire`) as `expired`,
-			`oemail`.`expire` as `expires`, `oemail`.`revoked` as `revoke`,
-			UNIX_TIMESTAMP(`oemail`.`revoked`) as `revoked`,
-			`oemail`.`CN`, `oemail`.`serial`, `oemail`.`id`,
-			`oemail`.`description`
-			from `orgemailcerts` as `oemail`, `org`
-			where `org`.`memid`='".intval($_SESSION['profile']['id'])."' and
-				`org`.`orgid`=`oemail`.`orgid` ";
-	if($viewall != 1)
-	{
-		$query .= "AND `oemail`.`revoked`=0 AND `oemail`.`renewed`=0 ";
-		$query .= "HAVING `timeleft` > 0 AND `revoked`=0 ";
-	}
-	$query .= "ORDER BY `oemail`.`modified` desc";
-	$res = mysql_query($query);
-	if(mysql_num_rows($res) <= 0)
-	{
+  $query = "select UNIX_TIMESTAMP(`oemail`.`created`) as `created`,
+      UNIX_TIMESTAMP(`oemail`.`expire`) - UNIX_TIMESTAMP() as `timeleft`,
+      UNIX_TIMESTAMP(`oemail`.`expire`) as `expired`,
+      `oemail`.`expire` as `expires`, `oemail`.`revoked` as `revoke`,
+      UNIX_TIMESTAMP(`oemail`.`revoked`) as `revoked`,
+      `oemail`.`CN`, `oemail`.`serial`, `oemail`.`id`,
+      `oemail`.`description`, `oemail`.`ou`, `orginfo`.`O`
+      from `orgemailcerts` as `oemail`, `org`, `orginfo`
+      where `org`.`memid`='".intval($_SESSION['profile']['id'])."' and
+        `org`.`orgid`=`oemail`.`orgid` and `orginfo`.`id` = `org`.`orgid`";
+  if($orgfilterid>0)
+  {
+    $query .= "AND `org`.`orgid`=$orgfilterid ";
+  }
+
+  if(0==$status)
+  {
+    $query .= "AND `oemail`.`revoked`=0 AND `oemail`.`renewed`=0 ";
+    $query .= "HAVING `timeleft` > 0 AND `revoked`=0 ";
+  }
+  switch ($sorting){
+    case 0:
+      $query .= "ORDER BY `orginfo`.`O`, `oemail`.`expire` desc";
+      break;
+    case 1:
+      $query .= "ORDER BY `orginfo`.`O`, `oemail`.`ou`, `oemail`.`expire` desc";
+      break;
+    case 2:
+      $query .= "ORDER BY `orginfo`.`O`, `oemail`.`CN`, `oemail`.`expire` desc";
+      break;
+  }
+  $res = mysql_query($query);
+  if(mysql_num_rows($res) <= 0)
+  {
 ?>
+
   <tr>
-    <td colspan="8" class="DataTD"><?=_("No client certificates are currently listed.")?></td>
+    <td colspan="9" class="DataTD"><?=_("No client certificates are currently listed.")?></td>
   </tr>
 <? } else {
-	while($row = mysql_fetch_assoc($res))
-	{
-		if($row['timeleft'] > 0)
-			$verified = _("Valid");
-		if($row['timeleft'] < 0)
-			$verified = _("Expired");
-		if($row['expired'] == 0)
-			$verified = _("Pending");
-		if($row['revoked'] > 0)
-			$verified = _("Revoked");
-                if($row['revoked'] == 0)
-                        $row['revoke'] = _("Not Revoked");
+  $orgname='';
+  while($row = mysql_fetch_assoc($res))
+  {
+    if ($row['O']<>$orgname) {
+      $orgname=$row['O'];?>
+  <tr>
+    <td colspan="9" class="title"></td>
+  </tr>
+  <tr>
+    <td colspan="9" class="title"><? printf(_("Certificates for %s"), $orgname)?> </td>
+  </tr>
+  <tr>
+    <td class="DataTD"><?=_("OU/Department")?></td>
+    <td class="DataTD"><?=_("Renew/Revoke/Delete")?></td>
+    <td class="DataTD"><?=_("Status")?></td>
+    <td class="DataTD"><?=_("CommonName")?></td>
+    <td class="DataTD"><?=_("SerialNumber")?></td>
+    <td class="DataTD"><?=_("Revoked")?></td>
+    <td class="DataTD"><?=_("Expires")?></td>
+    <td colspan="2" class="DataTD"><?=_("Comment *")?></td>
+  </tr>
+      <?
+    }
+    if($row['timeleft'] > 0)
+      $verified = _("Valid");
+    if($row['timeleft'] < 0)
+      $verified = _("Expired");
+    if($row['expired'] == 0)
+      $verified = _("Pending");
+    if($row['revoked'] > 0)
+      $verified = _("Revoked");
+    if($row['revoked'] == 0)
+      $row['revoke'] = _("Not Revoked");
 ?>
   <tr>
-<? if($verified == _("Valid") || $verified == _("Expired")) { ?>
+    <td class="DataTD"><?=$row['ou']?></td>
+    <? if($verified == _("Valid") || $verified == _("Expired")) { ?>
     <td class="DataTD"><input type="checkbox" name="revokeid[]" value="<?=$row['id']?>"></td>
     <td class="DataTD"><?=$verified?></td>
     <td class="DataTD"><a href="account.php?id=19&cert=<?=$row['id']?>"><?=$row['CN']?></a></td>
@@ -82,7 +163,7 @@
     <td class="DataTD"><?=$verified?></td>
     <td class="DataTD"><a href="account.php?id=19&cert=<?=$row['id']?>"><?=$row['CN']?></a></td>
 <? } ?>
-	  <td class="DataTD"><?=$row['serial']?></td>
+    <td class="DataTD"><?=$row['serial']?></td>
     <td class="DataTD"><?=$row['revoke']?></td>
     <td class="DataTD"><?=$row['expires']?></td>
     <td class="DataTD"><input name="comment_<?=$row['id']?>" type="text" value="<?=htmlspecialchars($row['description'])?>" /></td>
@@ -90,18 +171,20 @@
   </tr>
 <? } ?>
   <tr>
-    <td class="DataTD" colspan="8">
+    <td class="DataTD" colspan="9">
       <?=_('* Comment is NOT included in the certificate as it is intended for your personal reference only. To change the comment tick the checkbox and hit "Change Settings".')?>
     </td>
   </tr>
   <tr>
     <td class="DataTD" colspan="6"><input type="submit" name="renew" value="<?=_("Renew")?>">&#160;&#160;&#160;&#160;
-    			<input type="submit" name="revoke" value="<?=_("Revoke/Delete")?>"></td>
+          <input type="submit" name="revoke" value="<?=_("Revoke/Delete")?>"></td>
     <td class="DataTD" colspan="2"><input type="submit" name="change" value="<?=_("Change settings")?>"> </td>
   </tr>
+  <tr>
+    <td class="DataTD" colspan="9"><?=_("From here you can delete pending requests, or revoke valid certificates.")?></td>
+  </tr>
 <? } ?>
 </table>
 <input type="hidden" name="oldid" value="<?=$id?>">
 <input type="hidden" name="csrf" value="<?=make_csrf('clicerchange')?>" />
-</form>
-<p><?=_("From here you can delete pending requests, or revoke valid certificates.")?></p>
+</form>
\ No newline at end of file
diff --git a/pages/account/22.php b/pages/account/22.php
index cb40cf2..0413da0 100644
--- a/pages/account/22.php
+++ b/pages/account/22.php
@@ -14,12 +14,117 @@
     You should have received a copy of the GNU General Public License
     along with this program; if not, write to the Free Software
     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-*/ ?>
-<? $viewall=0; if(array_key_exists('viewall',$_REQUEST)) $viewall=intval($_REQUEST['viewall']); ?>
+*/
+
+$orgfilterid = array_key_exists('dorgfilterid',$_SESSION['_config']) ? intval($_SESSION['_config']['dorgfilterid']) : 0;
+$sorting = array_key_exists('dsorting',$_SESSION['_config']) ? intval($_SESSION['_config']['dsorting']) : 0;
+$status = array_key_exists('dstatus',$_SESSION['_config']) ? intval($_SESSION['_config']['dstatus']) : 0;
+?>
 <form method="post" action="account.php">
 <table align="center" valign="middle" border="0" cellspacing="0" cellpadding="0" class="wrapper">
   <tr>
-    <td colspan="8" class="title"><?=_("Domain Certificates")?> - <a href="account.php?id=22&amp;viewall=<?=!$viewall?>"><?=_("View all certificates")?></a></td>
+    <td colspan="8" class="title"><?=_("Organisation Server Certificates")?> </td>
+  </tr>
+  <tr>
+    <td colspan="8" class="title"><?=_("Filter/Sorting")?></td>
+  </tr>
+    <tr>
+      <td class="DataTD"><?=_("Organisation")?></td>
+      <td colspan="7" class="DataTD" >
+        <select name="dorgfilterid">
+          <?=sprintf('<option value="%d"%s>%s</option>',0, 0 == $orgfilterid ? " selected" : "" ,_("All")) ?>
+<?  $query = "select `orginfo`.`O`, `orginfo`.`id`
+      from `org`, `orginfo`
+      where `org`.`memid`='".intval($_SESSION['profile']['id'])."' and `orginfo`.`id` = `org`.`orgid`
+      ORDER BY `orginfo`.`O` ";
+    $reso = mysql_query($query);
+    if(mysql_num_rows($reso) >= 1){
+      while($row = mysql_fetch_assoc($reso)){
+        printf('<option value="%d"%s>%s</option>',$row['id'], $row['id'] == $orgfilterid ? " selected" : "" , $row['O']);
+      }
+    }?>
+        </select>
+    </td>
+  </tr>
+  <tr>
+    <td class="DataTD"><?=_("Sorting")?></td>
+    <td colspan="7" class="DataTD" >
+      <select name="dsorting">
+        <?=sprintf('<option value="%d"%s>%s</option>',0, 0 == $sorting ? " selected" : "" ,_("expire date (desc)")) ?>
+        <?=sprintf('<option value="%d"%s>%s</option>',1, 1 == $sorting ? " selected" : "" ,_("Common name, expire date (desc)")) ?>
+      </select>
+    </td>
+  </tr>
+  <tr>
+    <td class="DataTD"><?=_("Certificate status")?></td>
+    <td colspan="7" class="DataTD" >
+      <select name="dstatus">
+        <?=sprintf('<option value="%d"%s>%s</option>',0, 0 == $status ? " selected" : "" ,_("Current/Active")) ?>
+        <?=sprintf('<option value="%d"%s>%s</option>',1, 1 == $status ? " selected" : "" ,_("All")) ?>
+      </select>
+    </td>
+  </tr>
+  <tr>
+    <td class="DataTD" colspan="8"><input type="submit" name="reset" value="<?=_("Reset")?>" />&nbsp;&nbsp;&nbsp;&nbsp;
+      <input type="submit" name="filter" value="<?=_("Apply filter/sort")?>" /></td>
+  </tr>
+  <tr>
+    <td colspan="9" class="DataTD"> </td>
+  </tr>
+
+
+<?
+  $query = "select UNIX_TIMESTAMP(`orgdomaincerts`.`created`) as `created`,
+      UNIX_TIMESTAMP(`orgdomaincerts`.`expire`) - UNIX_TIMESTAMP() as `timeleft`,
+      UNIX_TIMESTAMP(`orgdomaincerts`.`expire`) as `expired`,
+      `orgdomaincerts`.`expire` as `expires`, `revoked` as `revoke`,
+      UNIX_TIMESTAMP(`revoked`) as `revoked`, `CN`,
+      `orgdomaincerts`.`serial`,
+      `orgdomaincerts`.`id` as `id`,
+      `orgdomaincerts`.`description`, `orginfo`.`O`
+      from `orgdomaincerts`,`org`, `orginfo`
+      where `org`.`memid`='".intval($_SESSION['profile']['id'])."'
+      and `orgdomaincerts`.`orgid`=`org`.`orgid` and `orginfo`.`id` = `org`.`orgid`";
+
+    if($orgfilterid>0)
+    {
+      $query .= "AND `org`.`orgid`=$orgfilterid ";
+    }
+
+    if(0==$status)
+    {
+      $query .= "AND `revoked`=0 AND `renewed`=0 ";
+      $query .= "HAVING `timeleft` > 0 ";
+    }
+    switch ($sorting){
+      case 0:
+        $query .= "ORDER BY `orginfo`.`O`, `orgdomaincerts`.`expire` desc";
+        break;
+      case 1:
+        $query .= "ORDER BY `orginfo`.`O`, `orgdomaincerts`.`CN`, `orgdomaincerts`.`expire` desc";
+        break;
+    }
+
+
+//echo $query."<br>\n";
+  $res = mysql_query($query);
+  if(mysql_num_rows($res) <= 0)
+  {
+?>
+  <tr>
+    <td colspan="8" class="DataTD"><?=_("No domains are currently listed.")?></td>
+  </tr>
+<? } else {
+  $orgname='';
+  while($row = mysql_fetch_assoc($res))
+  {
+    if ($row['O']<>$orgname) {
+      $orgname=$row['O'];?>
+  <tr>
+    <td colspan="9" class="title"></td>
+  </tr>
+  <tr>
+    <td colspan="9" class="title"><? printf(_("Certificates for %s"), $orgname)?> </td>
   </tr>
   <tr>
     <td class="DataTD"><?=_("Renew/Revoke/Delete")?></td>
@@ -29,42 +134,17 @@
     <td class="DataTD"><?=_("Revoked")?></td>
     <td class="DataTD"><?=_("Expires")?></td>
     <td colspan="2" class="DataTD"><?=_("Comment *")?></td>
-<?
-	$query = "select UNIX_TIMESTAMP(`orgdomaincerts`.`created`) as `created`,
-			UNIX_TIMESTAMP(`orgdomaincerts`.`expire`) - UNIX_TIMESTAMP() as `timeleft`,
-			UNIX_TIMESTAMP(`orgdomaincerts`.`expire`) as `expired`,
-			`orgdomaincerts`.`expire` as `expires`, `revoked` as `revoke`,
-			UNIX_TIMESTAMP(`revoked`) as `revoked`, `CN`,
-			`orgdomaincerts`.`serial`,
-			`orgdomaincerts`.`id` as `id`,
-			`orgdomaincerts`.`description`
-			from `orgdomaincerts`,`org`
-			where `org`.`memid`='".intval($_SESSION['profile']['id'])."' and `orgdomaincerts`.`orgid`=`org`.`orgid` ";
-	if($viewall != 1)
-	{
-		$query .= "AND `revoked`=0 AND `renewed`=0 ";
-		$query .= "HAVING `timeleft` > 0 ";
-	}
-	$query .= "ORDER BY `orgdomaincerts`.`modified` desc";
-//echo $query."<br>\n";
-	$res = mysql_query($query);
-	if(mysql_num_rows($res) <= 0)
-	{
-?>
-  <tr>
-    <td colspan="8" class="DataTD"><?=_("No domains are currently listed.")?></td>
   </tr>
-<? } else {
-	while($row = mysql_fetch_assoc($res))
-	{
-		if($row['timeleft'] > 0)
-			$verified = _("Valid");
-		if($row['timeleft'] < 0)
-			$verified = _("Expired");
-		if($row['expired'] == 0)
-			$verified = _("Pending");
-		if($row['revoked'] > 0)
-			$verified = _("Revoked");
+      <?
+    }
+    if($row['timeleft'] > 0)
+      $verified = _("Valid");
+    if($row['timeleft'] < 0)
+      $verified = _("Expired");
+    if($row['expired'] == 0)
+      $verified = _("Pending");
+    if($row['revoked'] > 0)
+      $verified = _("Revoked");
                 if($row['revoked'] == 0)
                         $row['revoke'] = _("Not Revoked");
 ?>
@@ -92,12 +172,15 @@
   </tr>
   <tr>
     <td class="DataTD" colspan="6"><input type="submit" name="renew" value="<?=_("Renew")?>" />&#160;&#160;&#160;&#160;
-	    <input type="submit" name="revoke" value="<?=_("Revoke/Delete")?>" /></td>
+      <input type="submit" name="revoke" value="<?=_("Revoke/Delete")?>" /></td>
     <td class="DataTD" colspan="2"><input type="submit" name="change" value="<?=_("Change settings")?>" /> </td>
   </tr>
+  <tr>
+    <td class="DataTD" colspan="9"><?=_("From here you can delete pending requests, or revoke valid certificates.")?></td>
+  </tr>
 <? } ?>
 </table>
 <input type="hidden" name="oldid" value="<?=$id?>" />
 <input type="hidden" name="csrf" value="<?=make_csrf('orgsrvcerchange')?>" />
 </form>
-<p><?=_("From here you can delete pending requests, or revoke valid certificates.")?></p>
+

Attachment: signature.asc
Description: OpenPGP digital signature




Archive powered by MHonArc 2.6.18.

Top of Page