<?php
// #region OnInit

// Identify the page as PHPBB component
define('IN_PHPBB', true);

/* include MYST structures */
include_once($_SERVER["APPL_PHYSICAL_PATH"].'includes/loader.php');
include_once($_SERVER["APPL_PHYSICAL_PATH"].'includes/loader_cyclopedia.php');
// Set page ID for MYST session management
UserHelper::InitializeSessionData("cyclopedia_item_media");
// init_userprefs($user->data);
// PERMISSION CHECKS
// if (!UserHelper::HasCyclopediaEditPermissions($user->data)) AppHelper::RedirectFast(AppHelper::ResolveCyclopediaUrl());
// ADDITIONAL CSS TO LOAD (comment the following line if none)

// #region OnInit



//#region Methods
function LoadData()
{
	global $ItemEngine,$Labels,$CurrentItem,$IsNewRecord,$ItemTypes;
	global $HasPermissions;
	$itemID=(!empty($_GET[ParameterNames::ItemID]))
				?$_GET[ParameterNames::ItemID]
				:$_POST[ParameterNames::ItemID];
	$IsNewRecord=(empty($itemID));
	if ($IsNewRecord) AppHelper::RedirectFast(AppHelper::ResolveCyclopediaUrl());
	$CurrentItem=$ItemEngine->GetItemByID($itemID,false);
	if (empty($CurrentItem)) ThrowException(GetResource("Cyclopedia","Item.NotFound.ErrorText"));
	$HasPermissions=$ItemEngine->GetUserPermissions($CurrentItem);
	$Labels["Title"]=$CurrentItem["Name"]." - ".GetResource("Cyclopedia","RelatedMedia.TitleText");
}

function ApplyChanges()
{
	global $ItemEngine,$CurrentItem,$HasPermissions;
	if (!$HasPermissions["Write"]) ThrowException("Errors","NotAuthorized.ErrorText");
	$mediaID=GetIndex($_POST,ParameterNames::RelatedID,null);
	if (!empty($mediaID)) $ItemEngine->AddRelatedItems($CurrentItem["ID"],array($mediaID));
	LoadData();
}

function RelatedMedia_RemoveRelatedItem()
{
	global $CurrentItem,$ItemEngine,$HasPermissions;
	if (!$HasPermissions["Write"]) ThrowException("Errors","NotAuthorized.ErrorText");
	$removeID=DataHelper::ToInteger(GetIndex($_GET,ParameterNames::RemoveID),null);
	if (!empty($removeID))
	{
		$row=$ItemEngine->GetItemByID($removeID,false);
		if (!empty($row)) $ItemEngine->RemoveRelatedItems($CurrentItem["ID"],array($row["ID"]));
	}
	AppHelper::RedirectFast(AppHelper::QueryStringFormat(array(ParameterNames::ItemID=>$CurrentItem["ID"])));
}

function RelatedMedia_RenderRelatedItemControls()
{
	global $RelatedItemTypes,$Controls;

	$ctlLabel=new Control();
	$ctlLabel->Tag="div";
	$ctlLabel->Value=$Controls->HyperLink(GetResource("Cyclopedia","RelatedItemTypes.LabelText"));
	$ctlLabel->Attributes["class"]="label";
    $ctlLabel->Attributes["style"] = "padding: 0px; line-height: 1.6em;";

	$ctlValue=new DropDownList();
	$ctlValue->Name="RelatedItemType";
	$ctlValue->Attributes["class"]="ddl chosen";
	$ctlValue->Enum=$RelatedItemTypes;
	$ctlValue->ResourceFile="Cyclopedia";
	$ctlValue->ResourcePrefix="RelatedItemTypes";

    $ctlValuePanel=new Control();
	$ctlValuePanel->Tag="div";
	$ctlValuePanel->Value=$ctlValue->Render();
	$ctlValuePanel->Attributes["class"]="value left";

	$ctl=new Control();
	$ctl->Tag="div";
	$ctl->Attributes["class"]="item-small";
	$ctl->Value=$ctlLabel->Render().$ctlValuePanel->Render();
	return $ctl->Render();
}
//#endregion Methods



// #region OnPreRender
LoadData();
PageHelper::TitleNameFormat($Page,$CurrentItem["Name"]);
if (!empty($_GET[ParameterNames::RemoveID])) RelatedMedia_RemoveRelatedItem();
if (!empty($_POST["fsRelatedItem_submit"])) ApplyChanges();
// #endregion OnPreRender

include_once(AppHelper::MapPath("includes/Controls/HtmlHeaderControl.php"));
include_once(AppHelper::MapPath("includes/Controls/PageHeaderControl.php"));
?>

<form method="post" name="frmEditItemMedia" action="<?php echo $_SERVER["SCRIPT_NAME"]; ?>">
<div class="cyclopedia">
	<?php include(AppHelper::MapPath("includes/Controls/Cyclopedia/TabMenuControl.php")); ?>
	<div class="contents">
		<div class="header-credits">
			<?php echo $Controls->Image(AppHelper::ResolveImageUrl("cyclopedia/credits.gif"),GetResource("Cyclopedia","HeaderCredits.Image.AlternateText")); ?>
		</div>
		<div class="paragraph">
			<div class="header">
				<div class="title a">
					<?php echo $Controls->Heading($Labels["Title"],1); ?>
				</div>
			</div>
		</div>
		<div class="paragraph">
		<?php 
			$RelatedMedia=$ItemEngine->GetRelatedMediaItems($CurrentItem["ID"],null,true,null,null,"MediaType","MediaType");
			if ($Engine->RowCount($RelatedMedia)==0) echo GetResource("Cyclopedia","RelatedMedia.EmptyContents.LabelText");
			else 
			{
				$pageSize=8;
				while ($r=$Engine->GetRow($RelatedMedia))
				{
					$orderBy=($r["MediaType"]==$MediaTypes["Log"])?"Name DESC":"Name";
					$counter=0;
					$ctl=new Control();
					$ctl->Tag="div";
					$ctl->Attributes["class"]="subtitle2";
					$ctl->Value=LocalizationHelper::GetValueName($MediaTypes,$r["MediaType"],"Cyclopedia","MediaTypes.Group");
					echo $ctl->Render();
					$tableID="relatedmedia-table-".$r["MediaType"];
					echo '<table id="'.$tableID.'" border="0" cellpadding="0" cellspacing="0" class="relateditem">';
					$dt=$ItemEngine->GetRelatedMediaItems($CurrentItem["ID"],$r["MediaType"],true,null,null,$orderBy);
					while ($row=$Engine->GetRow($dt))
					{
						$counter++;
						if ($row["MediaType"]==$MediaTypes["Image"])
						{
							$ctl=new ImageBox();
							$ctl->ImageUrl=$ItemEngine->GetItemImageUrl($row);
							$ctl->ThumbUrl=ImageHelper::GetLargeIconImage($ItemEngine->GetItemImageUrl($row),null,"121212");
							$ctl->Title=$row["Name"];
							$ctl->ImageBoxScope="Images";
                            $ctl->ImageAttributes["class"]="bdr01";
						}
						else
						{
							$ctl=new Control();
							$ctl->Tag="img";
							$ctl->Attributes["src"]=ImageHelper::GetLargeIconImage($ItemEngine->GetItemImageUrl($row),null,"121212");
							$ctl->Attributes["alt"]=$row["Name"];
                            $ctl->Attributes["class"]="bdr01";
						}

						$ctl2=new Control();
						$ctl2->Tag="div";
						$ctl2->Attributes["class"]="title";
						$links=$Controls->HyperLink($row["Name"],CyclopediaHelper::GetItemUrl($row));
						$links.="&nbsp;&nbsp;&nbsp;";
						if ($HasPermissions["Write"]) $links.=$ItemControls->RemoveLink($_SERVER["SCRIPT_NAME"].AppHelper::QueryStringFormat(array(ParameterNames::ItemID=>$CurrentItem["ID"],ParameterNames::RemoveID=>$row["ID"])));
						$links.="&nbsp;";
						$links.='<span class="edit">'.$Controls->HyperLink(GetResource("Cyclopedia","RelatedItemTypes.LabelText"))."&nbsp;".LocalizationHelper::GetValueName($RelatedItemTypes,DataHelper::ToInteger($row["RelatedItemType"],0),"Cyclopedia","RelatedItemTypes").'</span>';
						$ctl2->Value=$links;
						$ctl3=new Control();
						$ctl3->Tag="div";
						$ctl3->Attributes["class"]="text";
						$ctl3->Value=StringHelper::CutText(AppHelper::RenderText($row["Description"],$ParserTypes["Mediawiki"],$RenderingEngine["Plain"]),300);
						$table='<tr><td class="image-panel">{0}</td><td class="relateditem-contents-panel">{1}{2}</td></tr>';
						echo StringFormat($table,array($ctl->Render(),$ctl2->Render(),$ctl3->Render()));
					}
                    if ($dt) $dt->free();
					echo '</table>';
					$pageInfo=new PageInfo("relatedmediaPager".$r["MediaType"],$pageSize);
					$pageInfo->RowCount=$counter;
					$pageInfo->Attributes["class"]="pageinfo";
					echo $pageInfo->RenderClientScript($tableID);
				}
			}
		?>
		</div>
		<?php if ($HasPermissions["Write"]) {
			$ctl=new FindSelectControl("fsRelatedItem");
			$ctl->Attributes["class"]="relateditem-search";
			if (!empty($_POST["fsRelatedItem_search"]))
			{
				$query=new ItemSearchQuery();
				$query->SearchQuery=$_POST["fsRelatedItem_query"];
				$query->RequiredTypes[]=$ItemTypes["MediaItem"];
				$query->SortOrder="Name";
				$ctl->DataSource=$ItemEngine->FindItems($query);
			}
			else $ctl->DataSource=null;
			$ctl->LabelName="Name";
			$ctl->ValueName="ID";
			// $ctl->EmptyRecord=array("Name"=>"(".GetResource("Global","UI.NoOne.Text").")","ID"=>0);
			$ctl->ListName=ParameterNames::RelatedID;
			$ctl->SearchPanelAttributes["style"]="margin-top: 5px;";
			$ctl->InputAttributes["type"]="text";
			$ctl->InputAttributes["class"]="textbox";
			$ctl->InputAttributes["style"]="width:150px;margin-right:5px;";
			$ctl->InputValue=(!empty($_POST["fsRelatedItem_search"]))?$_POST["fsRelatedItem_query"]:null;
			$ctl->SearchButtonAttributes["class"]="btn a pad5";
			$ctl->SubmitButtonAttributes["class"]="btn a pad5";
			$ctl->SubmitButtonValue=GetResource("Global","UI.Add.Text");
			$ctl->ListAttributes["class"]="ddl chosen";
			echo $ctl->Render();
			if ((!empty($_POST["fsRelatedItem_search"]))&&(!empty($ctl->DataSource))&&($Engine->RowCount($ctl->DataSource)>0)) echo RelatedMedia_RenderRelatedItemControls();
		?>
		<div class="commands">
			<?php
				$ctl=new Control();
				$ctl->Tag="input";
				$ctl->Name="submit";
				$ctl->Attributes=array("type"=>"submit","class"=>"btn a mw120 big");
				$ctl->Value=strtolower(GetResource("Global","UI.Save.Text"));
				echo $ctl->Render();
			?>
			<?php
				$ctl=new Control();
				$ctl->Tag="input";
				$ctl->Name="cancel";
				$jsRedirect="location.href='".CyclopediaHelper::GetItemUrl($CurrentItem)."'";
				$ctl->Attributes=array("type"=>"button","class"=>"btn fc04 mw120 big","onclick"=>$jsRedirect);
				$ctl->Value=strtolower(GetResource("Global","UI.Cancel.Text"));
				echo $ctl->Render();
			?>
		</div>
		<?php } ?>
	</div>
</div>
<?php
	// hidden fields
	$ctl=new Control();
	$ctl->Tag="input";
	$ctl->Name=ParameterNames::ItemID;
	$ctl->Attributes=array("type"=>"hidden");
	$ctl->Value=$CurrentItem["ID"];
	echo $ctl->Render();
?>
</form>
<?php include_once(AppHelper::MapPath("includes/Controls/FooterControl.php")); ?>