<?php
/**
 * Displays a plugin on the admin screen.
 *
 * This file renders a plugin for the admin screen, including active/deactive,
 * manifest details & display plugin settings.
 *
 * @uses $vars['entity']
 * @uses $vars['display_reordering'] Do we display the priority reordering links?
 *
 * @package Elgg.Core
 * @subpackage Plugins
 */

/* @var ElggPlugin $plugin */
$plugin = $vars['entity'];

$reordering = elgg_extract('display_reordering', $vars, false);
$priority = $plugin->getPriority();
$active = $plugin->isActive();

$can_activate = $plugin->canActivate();
$max_priority = _elgg_get_max_plugin_priority();
$actions_base = '/action/admin/plugins/';
$css_id = preg_replace('/[^a-z0-9-]/i', '-', $plugin->getID());

// build reordering links
$links = '';
$classes = array('elgg-plugin');

if ($reordering) {
	$classes[] = 'elgg-state-draggable';

	// top and up link only if not at top
	if ($priority > 1) {
		$top_url = elgg_http_add_url_query_elements($actions_base . 'set_priority', array(
			'plugin_guid' => $plugin->guid,
			'priority' => 'first',
			'is_action' => true
		));

		$links .= "<li>" . elgg_view('output/url', array(
			'href' => $top_url,
			'text' => elgg_echo('top'),
			'is_action' => true,
			'is_trusted' => true,
		)) . "</li>";

		$up_url = elgg_http_add_url_query_elements($actions_base . 'set_priority', array(
			'plugin_guid' => $plugin->guid,
			'priority' => '-1',
			'is_action' => true
		));

		$links .= "<li>" . elgg_view('output/url', array(
			'href' => $up_url,
			'text' => elgg_echo('up'),
			'is_action' => true,
			'is_trusted' => true,
		)) . "</li>";
	}

	// down and bottom links only if not at bottom
	if ($priority < $max_priority) {
		$down_url = elgg_http_add_url_query_elements($actions_base . 'set_priority', array(
			'plugin_guid' => $plugin->guid,
			'priority' => '+1',
			'is_action' => true
		));

		$links .= "<li>" . elgg_view('output/url', array(
			'href' => $down_url,
			'text' => elgg_echo('down'),
			'is_action'	=> true,
			'is_trusted' => true,
		)) . "</li>";

		$bottom_url = elgg_http_add_url_query_elements($actions_base . 'set_priority', array(
			'plugin_guid' => $plugin->guid,
			'priority' => 'last',
			'is_action' => true
		));

		$links .= "<li>" . elgg_view('output/url', array(
			'href' 		=> $bottom_url,
			'text'		=> elgg_echo('bottom'),
			'is_action'	=> true,
			'is_trusted' => true,
		)) . "</li>";
	}
} else {
	$classes[] = 'elgg-state-undraggable';
}


// activate / deactivate links

// always let them deactivate
$options = array(
	'is_action' => true,
	'is_trusted' => true,
);
if ($active) {
	$classes[] = 'elgg-state-active';
	$action = 'deactivate';
	$options['text'] = elgg_echo('admin:plugins:deactivate');
	$options['class'] = "elgg-button elgg-button-cancel";

	if (!$can_activate) {
		$classes[] = 'elgg-state-active';
		$options['class'] = 'elgg-button elgg-state-warning';
	}
} else if ($can_activate) {
	$classes[] = 'elgg-state-inactive';
	$action = 'activate';
	$options['text'] = elgg_echo('admin:plugins:activate');
	$options['class'] = "elgg-button elgg-button-submit";
} else {
	$classes[] = 'elgg-state-inactive';
	$action = '';
	$options['text'] = elgg_echo('admin:plugins:cannot_activate');
	$options['class'] = "elgg-button elgg-button-disabled";
	$options['disabled'] = 'disabled';
}

if ($action) {
	$url = elgg_http_add_url_query_elements($actions_base . $action, array(
		'plugin_guids[]' => $plugin->guid
	));

	$options['href'] = $url;
}
$action_button = elgg_view('output/url', $options);

// Display categories and make category classes
$categories = $plugin->getManifest()->getCategories();
$categories_html = '';
if ($categories) {
	$base_url = elgg_get_site_url() . "admin/plugins?category=";

	foreach ($categories as $category) {
		$css_class = preg_replace('/[^a-z0-9-]/i', '-', $category);
		$classes[] = "elgg-plugin-category-$css_class";

		$url = $base_url . urlencode($category);
		$friendly_category = htmlspecialchars(ElggPluginManifest::getFriendlyCategory($category));
		$categories_html .= "<li class=\"elgg-plugin-category prm\"><a href=\"$url\">$friendly_category</a></li>";
	}
}

$screenshots_html = '';
$screenshots = $plugin->getManifest()->getScreenshots();
if ($screenshots) {
	$base_url = elgg_get_plugins_path() . $plugin->getID() . '/';
	foreach ($screenshots as $screenshot) {
		$desc = elgg_echo($screenshot['description']);
		$alt = htmlentities($desc, ENT_QUOTES, 'UTF-8');
		$screenshot_img = elgg_view('output/img', array(
			'src' => "admin_plugin_screenshot/{$plugin->getID()}/thumbnail/{$screenshot['path']}",
			'alt' => $alt,
		));
		$screenshot_link = elgg_view('output/url', array(
			'href' => "admin_plugin_screenshot/{$plugin->getID()}/full/{$screenshot['path']}",
			'text' => $screenshot_img,
			'class' => 'elgg-lightbox',
		));

		$screenshots_html .= "<li class=\"elgg-plugin-screenshot prm ptm\">$screenshot_link</li>";
	}
}

// metadata
$description = elgg_view('output/longtext', array('value' => $plugin->getManifest()->getDescription()));
$author = '<span>' . elgg_echo('admin:plugins:label:author') . '</span>: '
			. elgg_view('output/text', array('value' => $plugin->getManifest()->getAuthor()));
$version = htmlspecialchars($plugin->getManifest()->getVersion());
$website = elgg_view('output/url', array(
	'href' => $plugin->getManifest()->getWebsite(),
	'text' => $plugin->getManifest()->getWebsite(),
	'is_trusted' => true,
));

$resources = array(
	'repository' => $plugin->getManifest()->getRepositoryURL(),
	'bugtracker' => $plugin->getManifest()->getBugTrackerURL(),
	'donate' => $plugin->getManifest()->getDonationsPageURL(),
);

$resources_html = "<ul class=\"elgg-plugin-resources\">";
foreach ($resources as $id => $href) {
	if ($href) {
		$resources_html .= "<li class=\"prm\">";
		$resources_html .= elgg_view('output/url', array(
			'href' => $href,
			'text' => elgg_echo("admin:plugins:label:$id"),
			'is_trusted' => true,
		));
		$resources_html .= "</li>";
	}
}
$resources_html .= "</ul>";

$copyright = elgg_view('output/text', array('value' => $plugin->getManifest()->getCopyright()));
$license = elgg_view('output/text', array('value' => $plugin->getManifest()->getLicense()));

// show links to text files
$files = $plugin->getAvailableTextFiles();

$docs = '';
if ($files) {
	$docs = '<ul class="elgg-menu elgg-menu-hz">';
	foreach ($files as $file => $path) {
		$url = 'admin_plugin_text_file/' . $plugin->getID() . "/$file";
		$link = elgg_view('output/url', array(
			'text' => $file,
			'href' => $url,
			'is_trusted' => true,
		));
		$docs .= "<li>$link</li>";

	}
	$docs .= '</ul>';
}

?>

<div class="<?php echo implode(' ', $classes); ?>" id="<?php echo $css_id; ?>">
	<div class="elgg-image-block">
		<div class="elgg-image-alt">
			<?php if ($links) : ?>
			<ul class="elgg-menu elgg-menu-metadata">
				<?php echo $links; ?>
			</ul>
			<?php endif; ?>
			<div class="clearfloat float-alt mtm">
				<?php echo $action_button; ?>
			</div>
		</div>
		<div class="elgg-body">
<?php
$settings_view_old = 'settings/' . $plugin->getID() . '/edit';
$settings_view_new = 'plugins/' . $plugin->getID() . '/settings';
if (elgg_view_exists($settings_view_old) || elgg_view_exists($settings_view_new)) {
	$link = elgg_get_site_url() . "admin/plugin_settings/" . $plugin->getID();
	$settings_link = "<a class='elgg-plugin-settings' href='$link'>[" . elgg_echo('settings') . "]</a>";
} else {
	$settings_link = '';
}
?>
			<div class="elgg-head">
				<h3><?php echo $plugin->getManifest()->getName() . " $version $settings_link"; ?></h3>
			</div>
			<?php
			if ($plugin->getManifest()->getApiVersion() < 1.8) {
				$reqs = $plugin->getManifest()->getRequires();
				if (!$reqs) {
					$message = elgg_echo('admin:plugins:warning:elgg_version_unknown');
					echo "<p class=\"elgg-state-error\">$message</p>";
				}
			}
	
			if (!$can_activate) {
				if ($active) {
					$message = elgg_echo('admin:plugins:warning:unmet_dependencies_active');
					echo "<p class=\"elgg-state-warning\">$message</p>";
				} else {
					$message = elgg_echo('admin:plugins:warning:unmet_dependencies');
					echo "<p class=\"elgg-state-error\">$message</p>";
				}
			}
			?>
	
			<div><?php echo $description; ?></div>
			<p><?php echo $author . ' - ' . $website; ?></p>
			
			<?php
				echo $resources_html;
				echo $docs;
			?>
	
			<div class="pts">
			<?php 
				echo elgg_view('output/url', array(
					'href' => "#elgg-plugin-manifest-$css_id",
					'text' => elgg_echo("admin:plugins:label:moreinfo"),
					'rel' => 'toggle',
				));
			?>
			</div>
		</div>
	</div>
	<div class="elgg-plugin-more hidden" id="elgg-plugin-manifest-<?php echo $css_id; ?>">

		<?php
		if ($screenshots_html) {
			?>
			<div><ul><?php echo $screenshots_html; ?></ul></div>
			<?php
		}

		if ($categories_html) {
			?>
			<div><?php echo elgg_echo('admin:plugins:label:categories') . ": <ul class=\"elgg-plugin-categories\">$categories_html</ul>"; ?></div>
			<?php
		}

		?>
		<div><?php echo elgg_echo('admin:plugins:label:copyright') . ": " . $copyright; ?></div>
		<div><?php echo elgg_echo('admin:plugins:label:licence') . ": " . $license; ?></div>
		<div><?php echo elgg_echo('admin:plugins:label:location') . ": " . htmlspecialchars($plugin->getPath()) ?></div>
		<?php
			$contributors = elgg_view('object/plugin/elements/contributors', array('plugin' => $plugin));
			if (!empty($contributors)) {
				echo '<div>' . elgg_echo('admin:plugins:label:contributors') . ':';
				echo $contributors;
				echo '</div>';
			}
		?>

		<div><?php echo elgg_echo('admin:plugins:label:dependencies'); ?>:
		<?php
			echo elgg_view('object/plugin/elements/dependencies', array('plugin' => $plugin));
		?>
		</div>
	</div>
</div>
