Seite 1 von 1

Project-Block für ezPortal

Verfasst: Fr 09.Sep, 2005 00:06
von JohnGF
Danke Oxpus für die schnelle Hilfe (http://www.oxpus.de/viewtopic.php?t=4016). Konnte leider mit diesem Code nur das erste Projekt anzeigen. Nach einigem Probieren habe ich die Lösung gefunden. Deshalb möchte ich hier das Ergebnis vorstellen. Vielleicht hat ja jemand Interesse.

ToDo: admin_projects_config.php dem phpBB-Standard anpassen.

Gibt den Fortschritt von Projekten in 10% Schritten in einem Portalblock an.

Code: Alles auswählen

##############################################################
## MOD Title: Project Block for ezPortal (phpbb Plus)
## MOD Author: JohnGF  < webmaster@fs-arbeitserzieher.de > http://fs-arbeitserzieher.de/
## MOD Author: aUsTiN  [ (austin_inc@hotmail.com) 		(http://phpbb-portal.com)
## MOD Description: Adds a Project Block to ezPortal. Based on Project-Block for Blend-Portal
## MOD Version: 0.0.4 (Beta)
##
## Installation Level:	Easy
## Installation Time:	5 Minutes
## Files To Edit: 	includes/constants.php
##			portal.php
##			templates/{templates}/portal_body.tpl
##			language/lang_english/lang_main.php
##
## Included Files: admin_projects_config.php
##			and some images
##############################################################
## Author Notes: Many thanks to Oxpus for help. admin_projects_config is
##		hardcoded and original from aUsTiN. Will be softcoded
##		in the next time
##
##############################################################
## Before Adding This MOD To Your Forum, You Should Back Up All Files Related To This MOD
##############################################################

#
#-----[ SQL ]------------------------------------------
#
CREATE TABLE `phpbb_projects_block` (
  `name` TEXT NOT NULL,
  `percent` varchar(3) NOT NULL default ''
) TYPE=MyISAM;

#
# Dumping data for table `phpbb_projects_block`
#

INSERT INTO `phpbb_projects_block` VALUES ('Test Project' ,'0');
INSERT INTO `phpbb_projects_block` VALUES ('Test Project 2' ,'10');
INSERT INTO `phpbb_projects_block` VALUES ('Test Project 3' ,'20');
INSERT INTO `phpbb_projects_block` VALUES ('Test Project 4' ,'30');
INSERT INTO `phpbb_projects_block` VALUES ('Test Project 5' ,'40');
INSERT INTO `phpbb_projects_block` VALUES ('Test Project 6' ,'50');
INSERT INTO `phpbb_projects_block` VALUES ('Test Project 7' ,'60');
INSERT INTO `phpbb_projects_block` VALUES ('Test Project 8' ,'70');
INSERT INTO `phpbb_projects_block` VALUES ('Test Project 9' ,'80');
INSERT INTO `phpbb_projects_block` VALUES ('Test Project 10' ,'90');
INSERT INTO `phpbb_projects_block` VALUES ('Test Project 11' ,'100');

#
#-----[ COPY ]---------------------------------------------
#
copy root/*.* to your phpBB-Root
#
#-----[ OPEN ]---------------------------------------------
#
includes/constants.php

#
#-----[ FIND ]---------------------------------------------
#
?>

#
#-----[ BEFORE, ADD ]-------------------------------------
#
// Project Block
define('PROJECT_TABLE', $table_prefix.'projects_block');
#
#-----[ OPEN ]--------------------------------------------
#
portal.php

#
#-----[ FIND ]--------------------------------------------
#
$template->assign_vars(array(
	'WELCOME_TEXT' => $CFG['welcome_text'],
#
#-----[ AFTER, ADD ]--------------------------------------
#
// Project
  'L_PROJECT' => $lang['Project'],
#
#-----[ FIND ]--------------------------------------------
#
		$template->assign_var_from_handle("PORTAL_POLL", "pollbox");
	}
	
}
#
#-----[ AFTER, ADD ]--------------------------------------
#
// Project on Index
$sql = "SELECT * FROM " . PROJECT_TABLE . " ORDER BY name";
if (!$result = $db->sql_query($sql))
{
	message_die(GENERAL_ERROR, 'Could not query Project', '', __LINE__, __FILE__, $sql);
}
while ($row = $db->sql_fetchrow($result))
{
$template->assign_block_vars('project', array(
	  'PROJECTNAME' => $row['name'],
	 'PROJECTIMAGE' => '<img src="images/current_projects/' . $row['percent'] . '_percent.gif"  border="0">',
	 'PROJECTPERCENT' => $row['percent'])
	);
}

#
#-----[ OPEN ]--------------------------------------------
#
# Make sure to edit this file for every language installed
#
language/lang_english/lang_main.php

#
#-----[ FIND ]--------------------------------------------
#
$lang['Vote'] = 'Vote';
$lang['No_poll'] = 'No poll at the moment';

#
#-----[ AFTER, ADD ]--------------------------------------
#
$lang['Project'] = 'Projects in Progress';

#
#-----[ OPEN ]--------------------------------------------
#
# Make sure to edit this file for every template installed
#
templates/subSilver/portal_body.tpl

#
#-----[ FIND ]--------------------------------------------
#
			<td class="row1" align="left"><span class="gensmall">{TOTAL_USERS}<br />{NEWEST_USER}<br /><br/>{TOTAL_POSTS} {TOTAL_TOPICS}<br />&nbsp;</span></td>
		   </tr>
		  </table>

#
#-----[ AFTER, ADD ]--------------------------------------
#
<br />
<table width="100%" cellpadding="2" cellspacing="1" border="0" class="forumline"> 
<tr> 
<th>{L_PROJECT}</th> 
</tr> 
<tr> 
<td class="row1" align="center"><br />
<span class='gensmall'>	
<!-- BEGIN project -->
{project.PROJECTNAME}:<br>&nbsp;&nbsp;{project.PROJECTIMAGE}&nbsp;&nbsp;&nbsp;&nbsp;{project.PROJECTPERCENT}%<br /><br />	
<!-- END project -->
</span>
</td>    
</tr> 
</table> 

#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
# EoM
Folgende Idee zur Erweiterung: Links zu den Themen, in denen die Projekte beschrieben sind, evtl. Forum mit Zusatzfeldern.

Verfasst: Fr 09.Sep, 2005 08:04
von oxpus
Sowas ähnliches habe ich mit meiner Mod Request Todolist auch gemacht, aber eben nur ähnlich.
Ist dennoch eine gute Idee. Vielleicht kann man das auch mal brauchen.

Verfasst: Fr 09.Sep, 2005 13:38
von blondi
kleine frage,

ich will das gerade einbauen ... allerdings ist bei mir der code in der portal.php etwas anders...

Code: Alles auswählen

//
// END: Display News Topics
//

// $CFG['poll_forum']

// Poll
//set poll forum id here
//$poll_forum_id = 2;
//$fetchpoll = phpbb_fetch_poll($CFG['poll_forum']);

//Let's reduce the forums specified for poll display to the number allowed access to by the user

$arr_poll_forums = split(',', $CFG['poll_forum']);
$allowed_poll_forums = "";
$fetchpoll = "";
$poll_auth_field = "auth_vote";

for ( $i=0; $i<count($arr_poll_forums); $i++ )
{
   $is_auth = auth($poll_auth_field, $arr_poll_forums[$i], $userdata);
   if ($is_auth[$poll_auth_field])
   {
      if ( $allowed_poll_forums != "" )
      {
          $allowed_poll_forums .= ",";
      }
      $allowed_poll_forums .= $arr_poll_forums[$i];
   }
}

if (!empty($allowed_poll_forums))
{
    $fetchpoll = phpbb_fetch_poll($allowed_poll_forums);
}

if (!empty($fetchpoll))
{
    if ($userdata['user_id'] == ANONYMOUS)
    {
        $user_ip = $userdata['user_ip'];
        $guest_sql = " AND vote_user_ip = '$user_ip'";
    }
    else
    {
        $guest_sql = '';
    }

    $sql = "SELECT vote_id
        FROM " . VOTE_USERS_TABLE . "
        WHERE vote_id = " . $fetchpoll['vote_id'] . " AND vote_user_id = " . $userdata['user_id'] . $guest_sql;

   if( !$result = $db->sql_query($sql) )
   {
      message_die(GENERAL_ERROR, "Couldn't obtain user vote data for this topic", "", __LINE__, __FILE__, $sql);
   }
   $user_voted = ( $db->sql_numrows($result) ) ? TRUE : FALSE;

   if ( !$user_voted )
   {
      $is_auth = auth($poll_auth_field, $fetchpoll['forum_id'], $userdata);
      if ($is_auth[$poll_auth_field])
      //if ( $userdata['session_logged_in'] )
      {
         $vote_button = "<div align=\"center\"><input type='submit' class='mainoption' name='submit' value='Vote'></div><input type='hidden' name='topic_id' value='" . $fetchpoll['topic_id'] . "'><input type='hidden' name='mode' value='vote'>";
      }
      else
      {
         $vote_button = "<div align=\"center\">Voting Restricted</div>";
      }

      $template->assign_vars(array(
         'S_POLL_QUESTION' => $fetchpoll['vote_text'],
         'S_POLL_ACTION' => append_sid('posting.'.$phpEx.'?'.POST_TOPIC_URL.'='.$fetchpoll['topic_id']),
         'L_SUBMIT_VOTE' => $lang['Submit_vote'],
         'POLL_TOPIC_ID' => $fetchpoll['topic_id'],
         'SUBMIT_BUTTON' => $vote_button
      ));

      for ($i = 0; $i < count($fetchpoll['options']); $i++)
      {
         $template->assign_block_vars('poll_option_row', array(
            'OPTION_ID' => $fetchpoll['options'][$i]['vote_option_id'],
            'OPTION_TEXT' => $fetchpoll['options'][$i]['vote_option_text'],
            'VOTE_RESULT' => $fetchpoll['options'][$i]['vote_result'],
         ));
      }
   }
   else
   {
      $votes_total = 0;
      for($i = 0; $i < count($fetchpoll['options']); $i++)
         $votes_total += $fetchpoll['options'][$i]['vote_result'];

      $template->assign_vars(array(
         'POLL_TOPIC_ID' => $fetchpoll['topic_id'],
         'S_POLL_QUESTION' => $fetchpoll['vote_text'],
         'VOTE_RESULTS' => '<div align="center"><span class="gensmall">Total votes: ' . $votes_total . '</span></div>'
      ));

      for ($i = 0; $i < count($fetchpoll['options']); $i++)
      {
         $vote_percent = ( $votes_total > 0 ) ? $fetchpoll['options'][$i]['vote_result'] / $votes_total : 0;
         $vote_graphic_length = round($vote_percent * 70);

         $vote_graphic = 0;
         $vote_graphic = ($vote_graphic < $vote_graphic_max - 1) ? $vote_graphic + 1 : 0;

         if( count($orig_word) )
         {
            $vote_info[$i]['vote_option_text'] = preg_replace($orig_word, $replacement_word, $vote_info[$i]['vote_option_text']);
         }

         $template->assign_block_vars("poll_results_row", array(
            'POLL_OPTION_CAPTION' => $fetchpoll['options'][$i]['vote_option_text'],
            'POLL_OPTION_RESULT' => $fetchpoll['options'][$i]['vote_result'],
            'POLL_OPTION_PERCENT' => sprintf("%.1d%%", ($vote_percent * 100)),
            'POLL_OPTION_IMG_WIDTH' => $vote_graphic_length
         ));
      }

   }
}
else
{
   $template->assign_vars(array(
      'S_POLL_QUESTION' => $lang['No_poll'],
      'SUBMIT_BUTTON' => "<div align=\"center\"><span class=\"gensmall\"><input type='submit' class='mainoption' name='submit' value='Vote' disabled='disabled' /></span></div><span class=\"gensmall\"><input type='hidden' name='topic_id' value='" . $fetchpoll['topic_id'] . "' /><input type='hidden' name='mode' value='vote' /></span>"
   ));
}
//end poll
kann ich das, was in der portal.php einzufügen ist, einfach darunter setzen?

@edit
habs einfach darunter gesetzt :-))

noch eine frage, kann man die anzeige mit einem switch versehen, das man den block an und aus schalten kann?

gruß

Verfasst: Fr 09.Sep, 2005 17:52
von volker58
hab den mal eingebaut, kann aber kein projekt löschen im acp, was könnte da faul sein?

Verfasst: Sa 10.Sep, 2005 17:05
von JohnGF
@ volker: das acp ist noch nicht verändert! bin dabei, Bei mir ist es sichtbar?!
@ blondi: Ich denke, Du kannst es hinter //end poll setzen,
habe bei mir ein paar mods mehr drin.

Verfasst: So 11.Sep, 2005 14:07
von blondi
bei mir läuft das tadellos...

Verfasst: So 11.Sep, 2005 14:31
von volker58
auch mit löschen im acp? da muß ich müll eingebaut haben

Verfasst: So 11.Sep, 2005 18:17
von blondi
ja ich hab das komplett durchgetestet volker... bei mir funktioniert es, hab auch noch die images geändert ... siehe bei mir im portal auf der linken seite ganz unten....


gruss

Verfasst: So 11.Sep, 2005 18:31
von volker58
hm, aber beim einbau kann man nichts falsch machen, edit und neu erstellen geht, delete nicht. hat das noch ein anderer eingebaut und getestet?

Verfasst: So 11.Sep, 2005 19:05
von blondi
@volker

ich habs eben noch einmal komplett getestet ... neue anzeige erstellt und diese auch wieder gelöscht ...

ging einwandfrei!!!
scheinbar ist da irgendwas anderes bei dir was da stört

Verfasst: Mo 12.Sep, 2005 10:06
von JohnGF
@ Volker: Wie gesagt, das ACP ist komplett so von Blend-Portal übernommen, sobald ich Zeit habe, werde ich diese mit Templates etc. anpassen. Bin z.Zt. nur etwas in Stress, Prüfungen!

Schön, dass es bei Dir läuft, blondi.

Verfasst: Mo 12.Sep, 2005 15:15
von volker58
ich suche schon was da falsche sein könnte aber finde nichts in der datei.
könnte da mal einer mit drüberschauen was da nich so okay sein könnte?

Code: Alles auswählen

elseif($mode == "pro_delete")
{
if($update == "delete_it")
{
$project = $_POST['project'];								
if(!$project OR $project == "Choose a Project")
{
message_die(GENERAL_ERROR, "Specify A Project To Delete When Trying Again.",'Error');	
}
else
{
$q1 = "DELETE FROM ". $table_prefix ."projects_block
WHERE name = '$project'";			
$r1 =  $db->sql_query($q1);		
message_die(GENERAL_MESSAGE, "". $project . " Deleted.",'Success');
}
}

else
{					
echo "<table>";
echo "	<tr>";
echo "		<th>";
echo "			Projects Admin: Delete Projects";
echo "		</th>";
echo "	</tr>";
echo "</table>";
echo "<br><br>";

echo "<form>";
$app = append_sid("admin_projects_config.$phpEx?mode=pro_delete");

echo "<table>";
echo "	<tr>";  
echo "		<td>";
echo "				<select>";
echo "					<option>Choose a Project</option>";
$q3 = "SELECT name
FROM " . $table_prefix . "projects_block";
$r3 =  mysql_query($q3) or die("Bad q3:".mysql_error());
while(list($projects) = mysql_fetch_row($r3))
{		
echo "					<option>$projects</option>";
}
echo "				</select>";
echo "		</td>"; 					
echo "	</tr>"; 
echo "</table>";
echo "<br>";
echo "<table>";	
echo "	<tr>";
echo "		<td>";	
echo "			<br>";
echo "					<input>";	
echo "					<input>";
echo "			<br>";
echo "		</td>";				
echo "	</tr>";	
echo "</table>";
echo "</form>";
echo "<br><br>";										
}
}
die kompl. datei ist im ersten beitrag

danke schon mal

EDIT hat hier eventuell einer eine lösung warum das net will oder einen änlichen mod?