Twitter komponenta

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
dotTwelve
Člen | 167
+
0
-

Existuje?

Ondřej Brejla
Člen | 746
+
0
-

Něco to kdysi bývalo…kdyby ne, tak mám takovou minikomponentku, která ani nepotřebuje curl.

dotTwelve
Člen | 167
+
0
-

Ondřej Brejla napsal(a):

Něco to kdysi bývalo…kdyby ne, tak mám takovou minikomponentku, která ani nepotřebuje curl.

Tak jestli můžu poprosit. Tu starší komponentu jsem našel, která využívá CURL, ale musel jsem tam dvě věci opravit, aby se mi t zobrazovalo korektně bez chyb.

Za tu tvou budu vděčný.

sodae
Nette Evangelist | 250
+
0
-

Ale vtipny by bylo kdyby to někdo přenesl na TwitterControl x)

Ondřej Brejla
Člen | 746
+
0
-

Teď ti nerozumím…však moje minikomponentka se jmenuje TwitterControl :-D Ostatně podobně jako všechny moje komponenty ;-)

Ondřej Mirtes
Člen | 1536
+
0
-

S Twitterem pracuje Davidovo udělátko Twitter for PHP, udělat si TwitterControl je fakt snadné )

Ondřej Brejla
Člen | 746
+
0
-

Ono udělátko, bohužel, pracuje s cURL…proto jsem ho nemohl použít. Jinak je to moc pěkné :-) A jak říká Ondřej, udělat si TwitterControl je opravdu snadné :-)

Jod
Člen | 701
+
0
-

Ja používam Davidov twitter for php s curlom.
Ak sa niekomu zíde TwitterControl :)

Control:

<?php
class TwitterControl extends Control
{
	/** @persistent */
	public $page = 1;
	public $rowsPerPage = 5;

	function handlePage($page)
	{
		$this->invalidateControl();
	}

	function render()
	{
		$template = $this->createTemplate();
		$template->setFile(dirname(__FILE__) . '/twitter.phtml');

		try {
			$channel = $this->twitter->load(false, $this->rowsPerPage, $this->page);
			$template->channel = $channel;
		}
		catch(TwitterException $ex) {
			$template->message = $ex->getMessage();
		}
		$template->page = $this->page;
		$template->rowsPerPage = $this->rowsPerPage;
		$template->render();
	}

	function getTwitter()
	{
		static $twitter;
		if(null === $twitter) {
			$config = Environment::getConfig('twitter');
			$username = $config->username;
			$password = $config->password;
			$twitter = new Twitter($username, $password);
		}
		return $twitter;
	}
}
?>

Template:

{snippet}
<div class="twitter">
	{if !empty($message)}
	<div>
		{$message}
	</div>
	{/if}
	{if !empty($channel)}
	<ul>
	{for $i=0;$i<count($channel->status);$i++}
		<li{if $i%2} class="odd"{/if}>
			<div class="info">
				<a href="http://twitter.com/{$channel->status[$i]->user->screen_name}">
					<img src="{$channel->status[$i]->user->profile_image_url}" />
					<b>{$channel->status[$i]->user->name}</b>
				</a>
			</div>
			<div class="text">
				{$channel->status[$i]->text}
				<div class="timestamp">
					<small>{=date("j.n.Y", strtotime($channel->status[$i]->created_at))}</small><br />
				</div>
			</div>
			<br class="spacer" />
		</li>
	{/for}
	</ul>
	{/if}
	{if $page > 1}<a href="{link page, $page - 1}" class="ajax">&lt;&lt;</a>{/if}
	{$page}
	{if $i === $rowsPerPage}<a href="{link page, $page + 1}" class="ajax">&gt;&gt;</a>{/if}
</div>
{/snippet}

Použitie:

// Presenter
function createComponentTwitter()
{
	return new TwitterControl();
}

// Template
@{control twitter}
psimekjr
Člen | 20
+
0
-

Možná se ptám hloupě, ale když mi to v presenteru hlásí, že třída TwitterControl not found..
Měl bych někde svázat Presenter s Controlem (app/control/TwitterControl.php)?

function createComponentTwitter()
{
        return new TwitterControl();
}
Ondřej Brejla
Člen | 746
+
0
-

Promazat temp?

psimekjr
Člen | 20
+
0
-

Děkuju, pomohlo :-)