]> jfr.im git - irc/unrealircd/unrealircd-webpanel.git/blobdiff - channels/details.php
really fix, thanks Mi_92
[irc/unrealircd/unrealircd-webpanel.git] / channels / details.php
index 8fb37f5af3debb5461dd0df5a8d2fb695421abf5..46d33215cbaa3ff06f7073652de495886573df76 100644 (file)
@@ -1,6 +1,7 @@
 <?php
-require_once "../common.php";
-require_once "../header.php";
+require_once "../inc/common.php";
+require_once "../inc/connection.php";
+require_once "../inc/header.php";
 
 if ($uplink = $rpc->server()->get())
        IRCList::setmodes($uplink->server->features->chanmodes);
@@ -9,6 +10,8 @@ $channel = "";
 $channame = "";
 $nick = NULL;
 $channelObj = NULL;
+
+$can_edit = current_user_can(PERMISSION_EDIT_CHANNEL);
 do_log($_GET);
 do_log($_POST);
 if (isset($_GET['chan']))
@@ -153,6 +156,51 @@ if (!empty($_POST))
                        Message::Success($msgbox_str);
                }
        }
+
+       if (isset($_POST['newmodes']) && isset($_POST['paramed_modes']) && $can_edit)
+       {
+               $m = $_POST['newmodes'];
+               $p = $_POST['paramed_modes'];
+
+               do_log($p,$m);
+               $addmodestring = "+";
+               $addparamstring = "";
+               $delmodestring = "-";
+               $delparamstring = "";
+               foreach ($m as $mode)
+               {
+                       strcat($addmodestring, $mode);
+                       if (isset($p[$mode]) && strlen($p[$mode]))
+                               strcat($addparamstring, $p[$mode]." ");
+               }
+
+               $fmodes = $channelObj->modes;
+               $tok = split($fmodes);
+               $modes = $tok[0];
+               $params = rparv($fmodes);
+               $paramed_modes = sort_paramed_modes($modes, $params);
+               for ($i = 0; isset($modes[$i]) && $mode = $modes[$i]; $i++)
+               {
+                       if (!strstr($addmodestring, $mode))
+                       {
+                               $req = IRCList::lookup($mode)['requires'];
+                               if ($req == "Server")
+                                       continue;
+                               strcat($delmodestring, $mode);
+                               $grp = get_chmode_group($mode);
+                               if ($grp == 2)
+                                       strcat($delparamstring, $paramed_modes[$mode]." ");
+                       }
+                       
+               }
+
+
+               if ($rpc->channel()->set_mode($channel, $delmodestring.$addmodestring, $delparamstring." ".$addparamstring))
+                       Message::Success("Channel settings have been successfully updated");
+               else
+                       Message::Fail("Could not change channel settings: $rpc->error");
+       }
+
        /* Re-grab the channel because of updates */
        $channelObj = $rpc->channel()->get($channel, 4);
 }
@@ -160,21 +208,22 @@ if (!empty($_POST))
 ?>
 <title><?php echo $title; ?></title>
 <h6><?php echo $title; ?></h6>
-<br>
 
 
-<div class="container-xl">
 <form method="get" action="details.php">
-       <div class="text-left input-group">
+       <div class="text-left input-group" style="width: 35%;">
                <input class="form-control" id="chan" name="chan" type="text" value="<?php echo $channame; ?>">
                <div class="input-group-append">
                        <button type="submit" class="btn btn-primary">Go</button>
                </div>
        </div>
-</div>
 </form>
 <?php if (!$channelObj)
-               return; ?>
+{
+       require_once("../inc/footer.php");
+       return;
+}
+?>
 
 <!-- Modal for Add Ban -->
 <div class="modal fade" id="ban" tabindex="-1" role="dialog" aria-labelledby="confirmModalCenterTitle" aria-hidden="true">
@@ -209,7 +258,7 @@ if (!empty($_POST))
                                </label>
                        </div>
                        <div class="input-group mb-3">
-                               <label for="bantype_sel_type">Ban Type
+                               <label for="bantype_sel_type">Ban Type <small>Leave this blank for a "normal" ban</small>
                                        <select class="form-control" name="bantype_sel_type" id="bantype_sel_type">
                                                <option></option>
                                                <option>Match Account</option>
@@ -355,11 +404,7 @@ if (!empty($_POST))
                </div>
                <div class="modal-body">
                        <form method="post">
-                       
                        <?php generate_edit_chmodes($channelObj); ?>
-
-               </div>
-               <div class="modal-footer">
                        <input type="hidden" id="server" name="add_chex" value="e"></input>
                        <button id="CloseButton" type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
                        <button type="submit" action="post" class="btn btn-danger">Update</button>
@@ -467,21 +512,29 @@ if ($topicset)
                        </ul>
                
                <div class="tab-content">
-               
-                       <div role="tabpanel" class="tab-pane fade in" id="chanmodes">
+                       <br>
+                       <div class="tab-pane fade in" id="chanmodes">
+                               <button id="editlol" class="btn btn-sm btn-primary" <?php echo ($can_edit) ? "" : "disabled"; ?>>Change Settings</button>
                                <p class="card-text"><?php generate_html_chansettings($channelObj); ?></p>
+                       </div><form id="editchanmodes" method="post" name="editchanmodes">
+                       <div class="tab-pane" style="display: none" id="chanmodes_edit">
+                               
+                                       <div class="btn btn-sm btn-secondary" id="editchmodesbk">Go back</div>
+                                       <button type="submit" class="btn btn-sm btn-primary">Save Changes</button>
+                                       <p class="card-text"><?php generate_edit_chmodes($channelObj); ?></p>
+                               </form>
                        </div>
                        
-                       <div role="tabpanel" class="tab-pane fade in" id="chanbans">
+                       <div class="tab-pane fade in" id="chanbans">
                                <p class="card-text"><?php generate_chanbans_table($channelObj); ?></p>
                        </div>
-                       <div role="tabpanel" class="tab-pane fade in" id="chaninv">
+                       <div class="tab-pane fade in" id="chaninv">
                                <p class="card-text"><?php generate_chaninvites_table($channelObj); ?></p>
                        </div>
-                       <div role="tabpanel" class="tab-pane fade in" id="chanex">
+                       <div class="tab-pane fade in" id="chanex">
                                <p class="card-text"><?php generate_chanexcepts_table($channelObj); ?></p>
                        </div>
-                       <div role="tabpanel" class="tab-pane fade in" id="chanmodes_edit">
+                       <div class="tab-pane fade in" id="chanmodes_edit">
                                <p class="card-text"><?php /* insert hacks here */ ?></p>
                        </div>
                
@@ -491,9 +544,23 @@ if ($topicset)
     </div>
 </div>
 <script>
+       const toggleBtn = document.getElementById('editlol');
+       const staticInfo = document.getElementById('chanmodes');
+       const options = document.getElementById('chanmodes_edit');
+       const backBtn = document.getElementById('editchmodesbk');
+
+       backBtn.addEventListener('click', function() {
+               staticInfo.style.display = '';
+               options.style.display = 'none';
+       });
+       toggleBtn.addEventListener('click', function() {
+               staticInfo.style.display = 'none';
+               options.style.display = '';
+       });
+
     // show dat first tab
 $('.nav-tabs a[href="#chanmodes"]').tab('show')
 </script>
 <?php 
-require_once("../footer.php");
+require_once("../inc/footer.php");