-
Posts
384 -
Joined
-
Last visited
-
Days Won
1
Roych's Achievements
Sr. Member (5/6)
94
Reputation
-
Roych started following Module: FieldtypeAssistedURL , I made a simple seat booking module ;) and Getting weird errors non-stop!
-
Hello, I have created a simple module to preview theater seat reservations. This is my very first module, so be gentle as I'm not a coder. What is it about? The module creates 5 fields that must be added to the template of your choice. (e.g. event-post) In the template, you can then set the number of rows and the number of seats in each row. After save your preview is created. You can then book or cancel seats by clicking on the seats boxes or trash icon to cancel them. We have a small theater and sometimes we remove some seats, so I also added the option to remove them. Seat-booking.mp4 You can the render this on your frontend with: <?php // Assuming $page is the current page object $rows = $page->rows ?: 9; // Default to 9 rows if not set $seatsPerRow = $page->seats_per_row ?: 8; // Default to 8 seats per row if not set // Load the existing CSS for styling $cssFile = $this->wire()->config->urls->siteModules . 'TheaterSeating/styles.css'; echo '<link rel="stylesheet" href="' . $cssFile . '">'; // Start the seating chart output echo '<div class="theater-seating">'; // Loop through rows for ($i = $rows; $i > 0; $i--) { echo '<div class="row">'; // Start a new row echo '<div class="row-label">Vrsta ' . $i . '</div>'; // Row label // Loop through seats for ($j = 1; $j <= $seatsPerRow; $j++) { $seatId = "$i-$j"; $occupiedClass = in_array($seatId, explode(',', $page->booked_seats ?: '')) ? 'selected' : ''; $disabledClass = in_array($seatId, explode(',', $page->disabled_seats ?: '')) ? 'disabled' : ''; // Output the seat div echo '<div class="seat ' . $occupiedClass . ' ' . $disabledClass . '" data-seat-id="' . $seatId . '">'; // Add the cross overlay for disabled seats if ($disabledClass) { echo '<div class="cross">✖</div>'; // X overlay } echo '</div>'; // Close seat div } echo '</div>'; // Close row div } echo '<div class="stage">Oder</div>'; echo '</div>'; // Close theater seating div ?> and maybe style with: .seat { width: 50px; height: 50px; margin: 0 5px; /* Horizontal margin between seats */ background-color: #ccc; cursor: default; /* Change cursor to indicate no interaction */ display: flex; align-items: center; justify-content: center; position: relative; } .seat.occupied { background-color: #f00; /* Red for occupied seats */ } .seat.selected { background-color: #0f0; /* Green for selected (booked) seats */ } .seat.disabled { background-color: rgba(255, 0, 0, 0.5); /* Semi-transparent red for disabled seats */ } .cross { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: rgba(255, 0, 0, 0.5); /* Semi-transparent overlay */ display: flex; align-items: center; justify-content: center; font-size: 24px; color: white; } .row-label { font-size: 16px; margin-right: 10px; /* Space between the label and seats */ font-weight: 600; width: 100px; /* Set a fixed width to align labels */ } I hope someone will find it usefull. Fell free to make it better. 😉 You can download it here: TheaterSeating.zip Cheers 😉 Roych
- 1 reply
-
- 17
-
Is it possible to upgrade module to work with PHP 8.2 or 8.3 maybe? It only works on PHP 7.4 at least here ... Thank you R
-
Maybe something like this? $menuBuilder = $this->modules->get('MarkupMenuBuilder'); $menu = $this->pages->get($id); if ($menu->menu_items->count()) { $this->menuItems = $menuBuilder->getMenuItems($id); } else { // Handle the case where there are no menu items, for example: $this->menuItems = []; // or any other appropriate action } Haven't tested! This code (should) first checks if there are any menu items by using the count() method on the menu_items field. If there are menu items, it proceeds to fetch and assign them using the getMenuItems method from the MenuBuilder module. If there are no items, you can handle it as needed. In the example above, an empty array is assigned to $this->menuItems, but you can customize it to match your specific requirements. This approach allows you to use the MenuBuilder module to create menus with or without items, without triggering the error you mentioned. Cheers, R
-
Great, thank you for clarifying the problem. ? R
-
Hmm, never seen this in PW before. ... It stoped after half an hour, I updated everything to the latest version and now it seems that it is gone. I hope this is it. Thank you R
-
Hello, Not sure why nothing was changed on the site but today when I logged in my admin I'm getting several errors non-stop and they are weird wordpress looking errors, what is happening? I don't have any wordpress site installed on the server at all. Where are those errors coming from? Any ideas. The site and admin are working normaly as it seems, just errors are here all the time. Im posting gif to see what I mean. Any Ideas what is happening here? Thank you R
-
I'have a strange problem, my drag and drop is not working anymore not sure why. All the settings are correct and should be working. It's quite annoying, anybody else have this problem? any ideas how to fix this? Menu is published, unlocked. ... Thank you R
-
No, nothing like that. ?
-
Hmm, I was just playing with the module and I added <?php namespace ProcessWire; in front of the module files, and it seem that it started to work ... Not sure if this was the case at all. R
-
I tried both of them ... I have my site atm in a subfolder, but I moved it to the root but still, I can only see the right URL when logged in as superuser. Even editors cant see the URL's? Any idea? Thx R
-
I there any update on this module? Links only works when you are loged in as superuser, when you are logged out all links goes to homepage. I there some fix for this maybe? It is a shame, because the module is awesome I'm using PW v. 3.0.210 Thx R
-
No, still not resolved, I tought that the code above works but when I looked closer it wasn't. So I guess the best approach would be to create another menu for the footer.
-
Ohhh, with a lot of thinking, this is somehow working But not as expected ? <?php $homepage = $pages->get(1); // get the homepage $topLevelPages = $homepage->children("parent_id=1"); // get the top-level pages $out = ""; foreach ($topLevelPages as $page) { $out .= "<li><a href='{$page->url}'>{$page->title}</a></li>"; } if ($out != "") { $out = "<ul>" . $out . "</ul>"; echo $out; } else { echo "No menu items found."; } ?>
-
not realy working. The children are not native children of a page, they are made with MenuBuilder drag&drop option. I want those in my header main menu, but in my footer I only want to show the first row.
-
No it is the ID of my menuBuilder Menu instead of menu name I'm using ID