Låst under redigering?

Frågor kring MODdar (modifikationer) för phpBB 2.0.x.

Moderatorer: Moderatorgrupp, Supportgrupp

Användarens profilbild
tumba25
Hedersmedlem
Hedersmedlem
Inlägg: 2097
Blev medlem: 2007-04-18 09:38
Svar: 0
Ort: Kokkola, Finland.

Re: Låst under redigering?

Inlägg av tumba25 »

Om den första klickar på bakåt i sin webbläsare så får nästa som försöker ändra upptaget i 5 minuter.

Jag testade lite och det verkar fungera som tänkt, men om jag missat något så skyller jag på hunden.

Först SQL

Kod: Markera allt

ALTER TABLE `phpbb_posts` ADD `upptagen` INT( 11 ) UNSIGNED NOT NULL DEFAULT '0';
Öppna lang_main.php i dina språk-kataloger.
Find

Kod: Markera allt

// Posting/Replying (Not private messaging!)
//
After add

Kod: Markera allt

$lang['To_late'] = 'Långnäsa, någon hann före.';
$lang['Post_upptagen'] = 'Det är redan någon som grottar med denna.';
Öppna posting.php
Find

Kod: Markera allt

$sid = (isset($HTTP_POST_VARS['sid'])) ? $HTTP_POST_VARS['sid'] : 0;
After add

Kod: Markera allt

$to_late = (isset($HTTP_POST_VARS['upptagen'])) ? $HTTP_POST_VARS['upptagen'] : 0;
Find

Kod: Markera allt

$sql = "SELECT f.*, t.topic_id, t.topic_status, t.topic_type, t.topic_first_post_id, t.topic_last_post_id, t.topic_vote, p.post_id, p.poster_id" . $select_sql . "
Inline find

Kod: Markera allt

p.poster_id
Inline after add

Kod: Markera allt

, p.upptagen
Find

Kod: Markera allt

if ( ($result = $db->sql_query($sql)) && ($post_info = $db->sql_fetchrow($result)) )
{
	$db->sql_freeresult($result);
After add

Kod: Markera allt

	if($to_late && !$post_info['upptagen'])
	{
		message_die(GENERAL_MESSAGE, $lang['To_late']);
	}
	$upptagen = time();
	if($post_info['upptagen'] > $upptagen - 300 && !$submit)
	{
		message_die(GENERAL_MESSAGE, $lang['Post_upptagen']);
	}
	if($mode == 'editpost' && !$submit)
	{
		$sql = "UPDATE " . POSTS_TABLE . " SET upptagen = $upptagen WHERE post_id = $post_id";
		$db->sql_query($sql);
		$post_info['upptagen'] = $upptagen;
	}
	else if($mode == 'editpost' && $submit)
	{
		$sql = "UPDATE " . POSTS_TABLE . " SET upptagen = 0 WHERE post_id = $post_id";
		$db->sql_query($sql);
		$post_info['upptagen'] = 0;
	}
Find

Kod: Markera allt

	'S_POST_ACTION' => append_sid("posting.$phpEx"),
After add

Kod: Markera allt

	'S_UPPTAGEN' => $post_info['upptagen'],
Öppna posting_body.tpl
Find

Kod: Markera allt

{S_HIDDEN_FORM_FIELDS}
Inline after add

Kod: Markera allt

<input type="hidden" name="upptagen" value="{S_UPPTAGEN}" />
Detta kommer från en omodifierad phpBB 2.0.23, om du har någon annan version så kan hitta-strängarna skilja.

Happy testing.

/J
Bild
Developer @ phpBB MOD Team

Behöver du en modifikation skriven/installerad för ditt phpBB-forum? Eller kanske annan specialanpassad kod och/eller en server-administratör? https://tumba25.net/
Användarens profilbild
Holger
Support - Ledare
Support - Ledare
Inlägg: 6554
Blev medlem: 2004-06-09 08:32
Svar: 1
Ort: Hannover/Tyskland
Kontakt:

Re: Låst under redigering?

Inlägg av Holger »

TACK! Ska testa detta! Hör av mig med resultatet!
Holger Gremminger
Ingen support via PM!
Användarens profilbild
tumba25
Hedersmedlem
Hedersmedlem
Inlägg: 2097
Blev medlem: 2007-04-18 09:38
Svar: 0
Ort: Kokkola, Finland.

Re: Låst under redigering?

Inlägg av tumba25 »

Så kan du lägga till i viewtopic.php

Find

Kod: Markera allt

	$row_color = ( !($i % 2) ) ? $theme['td_color1'] : $theme['td_color2'];
	$row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2'];
Add after

Kod: Markera allt

	$upptagen = ($postrow[$i]['upptagen'] > time() - 300) ? TRUE : FALSE;
Find

Kod: Markera allt

'EDIT_IMG' => $edit_img,
Replace with

Kod: Markera allt

'EDIT_IMG' => ($upptagen) ? '' : $edit_img,
Så visas inte knappen under dom 5 minuterna heller.
Bild
Developer @ phpBB MOD Team

Behöver du en modifikation skriven/installerad för ditt phpBB-forum? Eller kanske annan specialanpassad kod och/eller en server-administratör? https://tumba25.net/
Användarens profilbild
Holger
Support - Ledare
Support - Ledare
Inlägg: 6554
Blev medlem: 2004-06-09 08:32
Svar: 1
Ort: Hannover/Tyskland
Kontakt:

Re: Låst under redigering?

Inlägg av Holger »

Ojojoj, nu bli det komplett. :mrgreen:
Tack för detta!
Har precis slutat jobba, ögonen "brinner".
Ska ta detta imorron!
Holger Gremminger
Ingen support via PM!
Användarens profilbild
Holger
Support - Ledare
Support - Ledare
Inlägg: 6554
Blev medlem: 2004-06-09 08:32
Svar: 1
Ort: Hannover/Tyskland
Kontakt:

Re: Låst under redigering?

Inlägg av Holger »

Hm, ledsen, men det verkar inte funka!
Jag får inga felmeddelanden.
Men knappen syns fortfarande.

Det här avsnittet:

Kod: Markera allt

if ( ($result = $db->sql_query($sql)) && ($post_info = $db->sql_fetchrow($result)) )
{
   $db->sql_freeresult($result);
ser ut så här hos mig:

Kod: Markera allt

if ( ($result = $db->sql_query($sql)) && ($post_info = $db->sql_fetchrow($result)) )
{

	$forum_id = $post_info['forum_id'];
	$forum_name = $post_info['forum_name'];

	$is_auth = auth(AUTH_ALL, $forum_id, $userdata, $post_info);

// close forum by daytime
if ($forum_id == '39')
   {
      $current_fc_time = date('Gi',time());
      if ($current_fc_time >= '700' && $current_fc_time <= '1800')
      {
         $post_info['forum_status'] = FORUM_LOCKED;
      }
   }
// close forum by daytime

	if ( $post_info['forum_status'] == FORUM_LOCKED && !$is_auth['auth_mod'])
	{
	   message_die(GENERAL_MESSAGE, $lang['Forum_locked']);
	}
	else if (($mode == 'archive' || $mode == 'newtopic') && $post_info['forum_status'] == FORUM_ARCHIVE)
	{
		message_die(GENERAL_MESSAGE, $lang['Archive_not_supported']);
	}
	else if ( $mode != 'newtopic' && $post_info['topic_status'] == TOPIC_LOCKED && !$is_auth['auth_mod'])
	{
	   message_die(GENERAL_MESSAGE, $lang['Topic_locked']);
	}
	else if (($mode == 'restore' && $post_info['forum_status'] != FORUM_ARCHIVE) || ($mode == 'delete' && $post_info['forum_enable_archive']) || ($mode == 'archive' && !$post_info['forum_enable_archive']))
	{
		message_die(GENERAL_MESSAGE, $lang['Forum_not_supported']);
	}

	$post_data['post_in_archive'] = ($post_info['forum_status'] == FORUM_ARCHIVE);

	if ( $mode == 'editpost' || $mode == 'delete' || $mode == 'archive' || $mode == 'restore' || $mode == 'poll_delete' )
	{
		$topic_id = $post_info['topic_id'];

		$post_data['poster_post'] = ( $post_info['poster_id'] == $userdata['user_id'] ) ? true : false;
		$post_data['first_post'] = ( $post_info['topic_first_post_id'] == $post_id ) ? true : false;
		$post_data['last_post'] = ( $post_info['topic_last_post_id'] == $post_id ) ? true : false;
		$post_data['last_topic'] = ( $post_info['forum_last_post_id'] == $post_id ) ? true : false;
		$post_data['has_poll'] = ( $post_info['topic_vote'] ) ? true : false;
		$post_data['topic_type'] = $post_info['topic_type'];
		$post_data['poster_id'] = $post_info['poster_id'];
		// News-Forums
		$post_data['news_type']           = $post_info['news_type'];
		$post_data['news_post_ori']       = $post_info['news_post_ori'];
		$post_data['news_post_hin']       = $post_info['news_post_hin'];
		$post_data['news_post_dis']       = $post_info['news_post_dis'];
		$post_data['news_post_new_post']  = (!empty($HTTP_POST_VARS['new_post'])) ? true : 0;

		$post_data['topic_quiz'] = !empty($post_info['topic_quiz']); // ADDED BY Quiz Hack

		if ( $post_data['first_post'] && $post_data['has_poll'] )
      {
         $sql = "SELECT *
            FROM " . VOTE_DESC_TABLE . " vd, " . VOTE_RESULTS_TABLE . " vr
            WHERE vd.topic_id = $topic_id
               AND vr.vote_id = vd.vote_id
            ORDER BY vr.vote_option_id";
         if ( !($result = $db->sql_query($sql)) )
         {
            message_die(GENERAL_ERROR, 'Could not obtain vote data for this topic', '', __LINE__, __FILE__, $sql);
         }

         $poll_options = array();
         $poll_results_sum = 0;
         if ( $row = $db->sql_fetchrow($result) )
         {
            $poll_title = $row['vote_text'];
            $poll_id = $row['vote_id'];
            $poll_length = $row['vote_length'] / 86400;

            do
            {
               $poll_options[$row['vote_option_id']] = $row['vote_option_text'];
               $poll_results_sum += $row['vote_result'];
            }
            while ( $row = $db->sql_fetchrow($result) );
         }
         // Some code was removed here for 2.0.7

$db->sql_freeresult($result);
Jag bör kanske tillägga att vi var två admins som testade ... gör det något?
Senast redigerad av tumba25 den 2008-08-31 19:09, redigerad totalt 1 gånger.
Anledning: Redigerad på begäran
Holger Gremminger
Ingen support via PM!
Användarens profilbild
tumba25
Hedersmedlem
Hedersmedlem
Inlägg: 2097
Blev medlem: 2007-04-18 09:38
Svar: 0
Ort: Kokkola, Finland.

Re: Låst under redigering?

Inlägg av tumba25 »

Jag testade som admin.

Lägg den stora delen som ska in i posting.php precis före

Kod: Markera allt

$forum_id = $post_info['forum_id'];
Bild
Developer @ phpBB MOD Team

Behöver du en modifikation skriven/installerad för ditt phpBB-forum? Eller kanske annan specialanpassad kod och/eller en server-administratör? https://tumba25.net/
Användarens profilbild
Holger
Support - Ledare
Support - Ledare
Inlägg: 6554
Blev medlem: 2004-06-09 08:32
Svar: 1
Ort: Hannover/Tyskland
Kontakt:

Re: Låst under redigering?

Inlägg av Holger »

Funkar PERFEKT!
Tack! :D

(Kan någon med behörighet anpassa mitt inlägg ovan? code-taggen!
Holger Gremminger
Ingen support via PM!
Användarens profilbild
Holger
Support - Ledare
Support - Ledare
Inlägg: 6554
Blev medlem: 2004-06-09 08:32
Svar: 1
Ort: Hannover/Tyskland
Kontakt:

Re: Låst under redigering?

Inlägg av Holger »

En lite grej som dykt upp ändå:
Om två personer tittar på ett inlägg samtidigt så ser de ju båda "ändra"-knappen.
De kan då båda trycka på den och editera.
Den som trycker på knappen SIST får dock felmeddelandet när det ändrade meddelandet skickas.
Skulle man kunna få till det så att felmeddelandet visas redan när "ändra"-knappen trycks?
Som det är nu så kanske de skriver och fixar en massa och när de klickar på "skicka" så blir de ganska frustrerade.
Holger Gremminger
Ingen support via PM!
Användarens profilbild
tumba25
Hedersmedlem
Hedersmedlem
Inlägg: 2097
Blev medlem: 2007-04-18 09:38
Svar: 0
Ort: Kokkola, Finland.

Re: Låst under redigering?

Inlägg av tumba25 »

Har för mig att den andra ska få felmeddelande redan när den klickar på knappen, om dom inte klickar exakt i samma ögonblick.

Jag ska installera det igen och kolla.
Bild
Developer @ phpBB MOD Team

Behöver du en modifikation skriven/installerad för ditt phpBB-forum? Eller kanske annan specialanpassad kod och/eller en server-administratör? https://tumba25.net/
Användarens profilbild
tumba25
Hedersmedlem
Hedersmedlem
Inlägg: 2097
Blev medlem: 2007-04-18 09:38
Svar: 0
Ort: Kokkola, Finland.

Re: Låst under redigering?

Inlägg av tumba25 »

Nu har jag installerat enligt instruktionerna i den här tråden. Den andra som klickar på "Edit" får
Det är redan någon som grottar med denna.
Jag satt med två datorer och försökte klicka exakt samtidigt. Den ena fick varje gång (ca 20 försök) reda på att den var lite sen.

Säker på att du inte råkat missa någon liten detalj?

Den här snutten finns i den stora delen som ska in i posting.php. Det är här det kollas om inlägget redan är upptaget.

Kod: Markera allt

   $upptagen = time();
   if($post_info['upptagen'] > $upptagen - 300 && !$submit)
   {
      message_die(GENERAL_MESSAGE, $lang['Post_upptagen']);
   }
Bild
Developer @ phpBB MOD Team

Behöver du en modifikation skriven/installerad för ditt phpBB-forum? Eller kanske annan specialanpassad kod och/eller en server-administratör? https://tumba25.net/
Användarens profilbild
Holger
Support - Ledare
Support - Ledare
Inlägg: 6554
Blev medlem: 2004-06-09 08:32
Svar: 1
Ort: Hannover/Tyskland
Kontakt:

Re: Låst under redigering?

Inlägg av Holger »

Det handlar inte om att de klickar samtidigt ...
De tittar på ett inlägg samtidigt.
Klockan 12:00:00 Autorn bestämmer sig för att ändra något.
Klockan 12:00:15 Moderatorn vill korrigera ett citat i samma inlägg.
Båda ser ju "ändra"-knappen.
Båda klickar på den.
Båda får upp meddelandet i Edit-läge.
Moderatorn får ett felmeddelande först när han skickar det ändrade inlägget. Inte innan.
Holger Gremminger
Ingen support via PM!
Användarens profilbild
tumba25
Hedersmedlem
Hedersmedlem
Inlägg: 2097
Blev medlem: 2007-04-18 09:38
Svar: 0
Ort: Kokkola, Finland.

Re: Låst under redigering?

Inlägg av tumba25 »

Precis det har jag också testat. Oavsett om moderatorn eller skribenten klickar på ändraknappen först så får den som är sist ett felmeddelande och kommer inte till edit-läget.

Det enda jag kan komma på är antingen någon liten miss vid installationen eller att någon annan modifikation krockar.

Jag utgår från att du inte missat ändringen i databasen. Fast då skulle nog båda få felmess.

Vågar du pm'a en titt i din posting.php?
Bild
Developer @ phpBB MOD Team

Behöver du en modifikation skriven/installerad för ditt phpBB-forum? Eller kanske annan specialanpassad kod och/eller en server-administratör? https://tumba25.net/
Användarens profilbild
Holger
Support - Ledare
Support - Ledare
Inlägg: 6554
Blev medlem: 2004-06-09 08:32
Svar: 1
Ort: Hannover/Tyskland
Kontakt:

Re: Låst under redigering?

Inlägg av Holger »

Mysko!

Laddar upp den ikväll. Tack.
Holger Gremminger
Ingen support via PM!
Användarens profilbild
Holger
Support - Ledare
Support - Ledare
Inlägg: 6554
Blev medlem: 2004-06-09 08:32
Svar: 1
Ort: Hannover/Tyskland
Kontakt:

Re: Låst under redigering?

Inlägg av Holger »

Här kommer min fil.
Den ena är omoddad, den andra med ändringarna.


En av moderatorerna säger att han inte kan ändra inlägg alls mer.
När jag lade tillbaka backupfilerna funkade allt igen ...
Bilagor
posting_moddad.zip
(13.8 KiB) Nerladdad 339 gånger
posting_omoddad.zip
(13.63 KiB) Nerladdad 311 gånger
Holger Gremminger
Ingen support via PM!
Användarens profilbild
tumba25
Hedersmedlem
Hedersmedlem
Inlägg: 2097
Blev medlem: 2007-04-18 09:38
Svar: 0
Ort: Kokkola, Finland.

Re: Låst under redigering?

Inlägg av tumba25 »

Det borde fungera. Jag har testat detta både på min lokala testserver och webbservern. Fungerar precis som planerat på båda två.

Vad får "en av moderatorerna" för meddelande när h*n försöker editera inlägg? Ser h*n knappen?

Har du php5? äldre, nyare?
MySQL 5?
Är det en Linux-server? Om inte, vad?
Bild
Developer @ phpBB MOD Team

Behöver du en modifikation skriven/installerad för ditt phpBB-forum? Eller kanske annan specialanpassad kod och/eller en server-administratör? https://tumba25.net/
Skriv svar

Vilka är online

Användare som besöker denna kategori: 8 och 0 gäster