sources management page
This commit is contained in:
		| @@ -35,6 +35,7 @@ function get_features() { | |||||||
| 			t('Post Composition Features'), | 			t('Post Composition Features'), | ||||||
| 			array('richtext',       t('Richtext Editor'),			t('Enable richtext editor')), | 			array('richtext',       t('Richtext Editor'),			t('Enable richtext editor')), | ||||||
| 			array('preview',        t('Post Preview'),				t('Allow previewing posts and comments before publishing them')), | 			array('preview',        t('Post Preview'),				t('Allow previewing posts and comments before publishing them')), | ||||||
|  | 			array('channel_sources', t('Channel Sources'),          t('Automatically import channel content from other channels or feeds')), | ||||||
| 		), | 		), | ||||||
|  |  | ||||||
| 		// Network Tools | 		// Network Tools | ||||||
|   | |||||||
							
								
								
									
										140
									
								
								mod/sources.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										140
									
								
								mod/sources.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,140 @@ | |||||||
|  | <?php /** @file */ | ||||||
|  |  | ||||||
|  | function sources_post(&$a) { | ||||||
|  | 	if(! local_user()) | ||||||
|  | 		return; | ||||||
|  |  | ||||||
|  | 	if(! feature_enabled(local_user(),'channel_sources')) | ||||||
|  | 		return ''; | ||||||
|  |  | ||||||
|  | 	$source = intval($_REQUEST['source']); | ||||||
|  | 	$xchan = $_REQUEST['xchan']; | ||||||
|  | 	$words = $_REQUEST['words']; | ||||||
|  | 	$frequency = $_REQUEST['frequency']; | ||||||
|  |  | ||||||
|  | 	$channel = $a->get_channel(); | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 	if(! $source) { | ||||||
|  | 		$r = q("insert into source ( src_channel_id, src_channel_xchan, src_xchan, src_patt ) | ||||||
|  | 			values ( %d, '%s', '%s', '%s' ) ", | ||||||
|  | 			intval(local_user()), | ||||||
|  | 			dbesc($channel['channel_hash']), | ||||||
|  | 			dbesc($xchan), | ||||||
|  | 			dbesc($words) | ||||||
|  | 		); | ||||||
|  | 		if($r) { | ||||||
|  | 			info( t('Source created.') . EOL); | ||||||
|  | 		} | ||||||
|  | 		goaway(z_root() . '/sources'); | ||||||
|  | 	} | ||||||
|  | 	else { | ||||||
|  | 		$r = q("update source set src_xchan = '%s', src_patt = '%s' where src_channel_id = %d and src_id = %d limit 1", | ||||||
|  | 			dbesc($xchan), | ||||||
|  | 			dbesc($words), | ||||||
|  | 			intval(local_user()), | ||||||
|  | 			intval($source) | ||||||
|  | 		); | ||||||
|  | 		if($r) { | ||||||
|  | 			info( t('Source updated.') . EOL); | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | function sources_content(&$a) { | ||||||
|  | 	if(! local_user()) { | ||||||
|  | 		notice( t('Permission denied.') . EOL); | ||||||
|  | 		return ''; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	if(! feature_enabled(local_user(),'channel_sources')) { | ||||||
|  | 		return ''; | ||||||
|  | 	}  | ||||||
|  |  | ||||||
|  | 	// list sources | ||||||
|  | 	if(argc() == 1) { | ||||||
|  | 		$r = q("select source.*, xchan.* from source left join xchan on src_xchan = xchan_hash where src_channel_id = %d", | ||||||
|  | 			intval(local_user()) | ||||||
|  | 		); | ||||||
|  | 		if($r) { | ||||||
|  | 			for($x = 0; $x < count($r); $x ++) { | ||||||
|  | 				$r[$x]['src_patt'] = htmlspecialchars($r[$x]['src_patt']); | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		$o = replace_macros(get_markup_template('sources_list.tpl'), array( | ||||||
|  | 			'$title' => t('Channel Sources'), | ||||||
|  | 			'$desc' => t('Manage remote sources of content for your channel.'), | ||||||
|  | 			'$new' => t('New Source'), | ||||||
|  | 			'$sources' => $r | ||||||
|  | 		)); | ||||||
|  | 		return $o; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	if(argc() == 2 && argv(1) === 'new') { | ||||||
|  | 		// TODO add the words 'or RSS feed' and corresponding code to manage feeds and frequency | ||||||
|  |  | ||||||
|  | 		$o = replace_macros(get_markup_template('sources_new.tpl'), array( | ||||||
|  | 			'$title' => t('New Source'), | ||||||
|  | 			'$desc' => t('Import all or selected content from the following channel into this channel and distribute it according to your channel settings.'), | ||||||
|  | 			'$words' => array( 'words', t('Only import content with these words (one per line)'),'',t('Leave blank to import all public content')), | ||||||
|  | 			'$name' => array( 'name', t('Channel Name'), '', ''), | ||||||
|  | 			'$submit' => t('Submit') | ||||||
|  | 		)); | ||||||
|  | 		return $o; | ||||||
|  |  | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	if(argc() == 2 && intval(argv(1))) { | ||||||
|  | 		// edit source | ||||||
|  | 		$r = q("select source.*, xchan.* from source left join xchan on src_xchan = xchan_hash where src_id = %d and src_channel_id = %d limit 1", | ||||||
|  | 			intval(argv(1)), | ||||||
|  | 			intval(local_user()) | ||||||
|  | 		); | ||||||
|  | 		if(! $r) { | ||||||
|  | 			notice( t('Source not found.') . EOL); | ||||||
|  | 			return ''; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		$r[0]['src_patt'] = htmlspecialchars($r[0]['src_patt']); | ||||||
|  |  | ||||||
|  | 		$o = replace_macros(get_markup_template('sources_edit.tpl'), array( | ||||||
|  | 			'$title' => t('Edit Source'), | ||||||
|  | 			'$drop' => t('Delete Source'), | ||||||
|  | 			'$id' => $r[0]['src_id'], | ||||||
|  | 			'$desc' => t('Import all or selected content from the following channel into this channel and distribute it according to your channel settings.'), | ||||||
|  | 			'$words' => array( 'words', t('Only import content with these words (one per line)'),$r[0]['src_patt'],t('Leave blank to import all public content')), | ||||||
|  | 			'$xchan' => $r[0]['src_xchan'], | ||||||
|  | 			'$name' => array( 'name', t('Channel Name'), $r[0]['xchan_name'], ''), | ||||||
|  | 			'$submit' => t('Submit') | ||||||
|  | 		)); | ||||||
|  | 		return $o; | ||||||
|  |  | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	if(argc() == 3 && intval(argv(1)) && argv(2) === 'drop') { | ||||||
|  | 		$r = q("select * from source where src_id = %d and src_channel_id = %d limit 1", | ||||||
|  | 			intval(argv(1)), | ||||||
|  | 			intval(local_user()) | ||||||
|  | 		); | ||||||
|  | 		if(! $r) { | ||||||
|  | 			notice( t('Source not found.') . EOL); | ||||||
|  | 			return ''; | ||||||
|  | 		} | ||||||
|  | 		$r = q("delete from source where src_id = %d and src_channel_id = %d limit 1", | ||||||
|  | 			intval(argv(1)), | ||||||
|  | 			intval(local_user()) | ||||||
|  | 		); | ||||||
|  | 		if($r) | ||||||
|  | 			info( t('Source removed') . EOL); | ||||||
|  | 		else | ||||||
|  | 			notice( t('Unable to remove source.') . EOL); | ||||||
|  |  | ||||||
|  | 		goaway(z_root() . '/sources'); | ||||||
|  |  | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	// shouldn't get here. | ||||||
|  |  | ||||||
|  | } | ||||||
							
								
								
									
										12
									
								
								view/js/mod_sources.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								view/js/mod_sources.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | |||||||
|  | $(document).ready(function() {  | ||||||
|  | 	var a;  | ||||||
|  | 	a = $("#id_name").autocomplete({  | ||||||
|  | 		serviceUrl: baseurl + '/acl', | ||||||
|  | 		minChars: 2, | ||||||
|  | 		width: 350, | ||||||
|  | 		onSelect: function(value,data) { | ||||||
|  | 			$("#id_xchan").val(data); | ||||||
|  | 		}			 | ||||||
|  | 	}); | ||||||
|  |  | ||||||
|  | });  | ||||||
							
								
								
									
										22
									
								
								view/tpl/sources_edit.tpl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								view/tpl/sources_edit.tpl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | |||||||
|  | <h1>{{$title}}</h1> | ||||||
|  |  | ||||||
|  | <div class="descriptive-text">{{$desc}}</div> | ||||||
|  |  | ||||||
|  | <form action="sources" method="post"> | ||||||
|  | <input type="hidden" name="source" value="{{$id}}" /> | ||||||
|  | <input type="hidden" id="id_xchan" name="xchan" value="{{$xchan}}" /> | ||||||
|  | {{include file="field_input.tpl" field=$name}} | ||||||
|  | {{include file="field_textarea.tpl" field=$words}} | ||||||
|  |  | ||||||
|  | <div class="sources-submit-wrapper" > | ||||||
|  | <input type="submit" name="submit" class="sources-submit" value="{{$submit}}" /> | ||||||
|  | </div> | ||||||
|  | </form> | ||||||
|  | <br /> | ||||||
|  | <br /> | ||||||
|  | <a href="sources/{{$id}}/drop">{{$drop}}</a> | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
							
								
								
									
										15
									
								
								view/tpl/sources_list.tpl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								view/tpl/sources_list.tpl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | |||||||
|  | <h1>{{$title}}</h1> | ||||||
|  |  | ||||||
|  | <div class="descriptive-text">{{$desc}}</div> | ||||||
|  |  | ||||||
|  | <div class="sources-links"> | ||||||
|  | <a href="sources/new">{{$new}}</a> | ||||||
|  | </div> | ||||||
|  |  | ||||||
|  | {{if $sources}} | ||||||
|  | <ul class="sources-list"> | ||||||
|  | {{foreach $sources as $source}} | ||||||
|  | <li><a href="sources/{{$source.src_id}}">{{$source.xchan_name}}</a></li> | ||||||
|  | {{/foreach}} | ||||||
|  | </ul> | ||||||
|  | {{/if}} | ||||||
							
								
								
									
										15
									
								
								view/tpl/sources_new.tpl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								view/tpl/sources_new.tpl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | |||||||
|  | <h1>{{$title}}</h1> | ||||||
|  |  | ||||||
|  | <div class="descriptive-text">{{$desc}}</div> | ||||||
|  |  | ||||||
|  | <form action="sources" method="post"> | ||||||
|  | <input type="hidden" id="id_xchan" name="xchan" value="{{$xchan}}" /> | ||||||
|  | {{include file="field_input.tpl" field=$name}} | ||||||
|  | {{include file="field_textarea.tpl" field=$words}} | ||||||
|  |  | ||||||
|  | <div class="sources-submit-wrapper" > | ||||||
|  | <input type="submit" name="submit" class="sources-submit" value="{{$submit}}" /> | ||||||
|  | </div> | ||||||
|  | </form> | ||||||
|  |  | ||||||
|  |  | ||||||
		Reference in New Issue
	
	Block a user