| 1 |
<?php |
| 2 |
/** |
| 3 |
* Templates |
| 4 |
* |
| 5 |
* @package AutomatorWP\AI_Assistant\Templates |
| 6 |
* @since 1.0.0 |
| 7 |
* @version 1.0.0 |
| 8 |
*/ |
| 9 |
// Exit if accessed directly |
| 10 |
if ( ! defined( 'ABSPATH' ) ) exit; |
| 11 |
|
| 12 |
/** |
| 13 |
* Add custom footer to the admin dashboard |
| 14 |
* |
| 15 |
* @since 1.0.0 |
| 16 |
*/ |
| 17 |
function automatorwp_ai_assistant_admin_footer() { |
| 18 |
if( automatorwp_ai_assistant_is_valid_page() ) automatorwp_ai_assistant_render(); |
| 19 |
} |
| 20 |
add_action( 'admin_footer', 'automatorwp_ai_assistant_admin_footer' ); |
| 21 |
|
| 22 |
/** |
| 23 |
* Render AI assistant |
| 24 |
* |
| 25 |
* @since 1.0.0 |
| 26 |
*/ |
| 27 |
function automatorwp_ai_assistant_render() { |
| 28 |
|
| 29 |
// Bail if disabled |
| 30 |
if( (bool) automatorwp_get_option( 'disable_ai_assistant', false ) ) { |
| 31 |
return false; |
| 32 |
} |
| 33 |
|
| 34 |
?> |
| 35 |
|
| 36 |
<div class="automatorwp-ai-assistant"> |
| 37 |
|
| 38 |
<div class="automatorwp-ai-assistant-help" data-status="close" style="display: none;"> |
| 39 |
<?php automatorwp_ai_assistant_render_help(); ?> |
| 40 |
</div> |
| 41 |
|
| 42 |
<div class="automatorwp-ai-assistant-chat" data-status="close" style="display: none;"> |
| 43 |
|
| 44 |
<div class="automatorwp-ai-assistant-chat-top"> |
| 45 |
<div class="automatorwp-ai-assistant-chat-title"> |
| 46 |
<span> |
| 47 |
<div class="automatorwp-logo"></div> |
| 48 |
<?php esc_html_e( 'AutomatorWP', 'automatorwp' ); ?> |
| 49 |
</span> |
| 50 |
<?php esc_html_e( 'AI Assistant', 'automatorwp' ); ?> |
| 51 |
</div> |
| 52 |
<div class="automatorwp-ai-assistant-chat-help-button"> |
| 53 |
<span class="cmb-tooltip"> |
| 54 |
<span class="dashicons dashicons-cmb-tooltip"></span> |
| 55 |
<span class="cmb-tooltip-desc cmb-tooltip-top"><?php esc_html_e( 'Click to get help', 'automatorwp' ); ?></span> |
| 56 |
</span> |
| 57 |
</div> |
| 58 |
|
| 59 |
<div class="automatorwp-ai-assistant-chat-close-button"> |
| 60 |
<span class="cmb-tooltip"> |
| 61 |
<span class="dashicons dashicons-no-alt"></span> |
| 62 |
<span class="cmb-tooltip-desc cmb-tooltip-top"><?php esc_html_e( 'Close', 'automatorwp' ); ?></span> |
| 63 |
</span> |
| 64 |
</div> |
| 65 |
</div> |
| 66 |
|
| 67 |
<div class="automatorwp-ai-assistant-chat-history"></div> |
| 68 |
|
| 69 |
<div class="automatorwp-ai-assistant-chat-bottom"> |
| 70 |
<form action="" class="automatorwp-ai-assistant-chat-form"> |
| 71 |
<textarea rows="1" id="automatorwp-ai-assistant-chat-input" class="automatorwp-ai-assistant-chat-input" placeholder="<?php esc_html_e( 'Ask anything...', 'automatorwp' ); ?>"></textarea> |
| 72 |
<button type="submit" class="automatorwp-ai-assistant-chat-input-submit automatorwp-ai-assistant-button automatorwp-ai-assistant-button-primary"> |
| 73 |
<i class="automatorwp-ai-assistant-icon automatorwp-ai-assistant-icon-send"></i> |
| 74 |
</button> |
| 75 |
<?php automatorwp_ai_assistant_render_model_select(); ?> |
| 76 |
</form> |
| 77 |
</div> |
| 78 |
|
| 79 |
</div> |
| 80 |
|
| 81 |
<div class="automatorwp-ai-assistant-bubble cmb-tooltip"> |
| 82 |
<div class="cmb-tooltip-desc cmb-tooltip-left"><?php esc_html_e( 'AI Assistant', 'automatorwp' ); ?></div> |
| 83 |
<?php automatorwp_ai_assistant_render_face(); ?> |
| 84 |
</div> |
| 85 |
|
| 86 |
</div> |
| 87 |
<?php |
| 88 |
} |
| 89 |
|
| 90 |
/** |
| 91 |
* Render models select |
| 92 |
* |
| 93 |
* @since 1.0.0 |
| 94 |
*/ |
| 95 |
function automatorwp_ai_assistant_render_model_select() { |
| 96 |
|
| 97 |
$providers = automatorwp_ai_assistant_get_models(); |
| 98 |
|
| 99 |
if( ! count( $providers ) ) return; |
| 100 |
|
| 101 |
?> |
| 102 |
|
| 103 |
<select id="automatorwp-ai-assistant-chat-model-input" class="automatorwp-ai-assistant-chat-model-input"> |
| 104 |
<option value=""><?php esc_html_e( 'Default Model', 'automatorwp' ); ?></option> |
| 105 |
<?php foreach( $providers as $provider ) : ?> |
| 106 |
<optgroup label="<?php echo esc_attr( $provider['name'] ); ?>"> |
| 107 |
<?php foreach( $provider['models'] as $model => $name ) : ?> |
| 108 |
<option value="<?php echo esc_attr( $model ); ?>"><?php echo esc_html( $name ); ?></option> |
| 109 |
<?php endforeach; ?> |
| 110 |
</optgroup> |
| 111 |
<?php endforeach; ?> |
| 112 |
</select> |
| 113 |
|
| 114 |
<?php |
| 115 |
|
| 116 |
} |
| 117 |
|
| 118 |
/** |
| 119 |
* Render AI assistant face |
| 120 |
* |
| 121 |
* @since 1.0.0 |
| 122 |
*/ |
| 123 |
function automatorwp_ai_assistant_render_face() { |
| 124 |
$url = AUTOMATORWP_AI_ASSISTANT_URL . 'assets/img/'; ?> |
| 125 |
|
| 126 |
<div class="automatorwp-ai-assistant-face" data-status="idle"> |
| 127 |
<span class="automatorwp-ai-assistant-head"> |
| 128 |
<img src="<?php echo esc_attr( $url . 'head.svg' ); ?>" alt="" data-key="head-01"> |
| 129 |
</span> |
| 130 |
<span class="automatorwp-ai-assistant-eyes"> |
| 131 |
<img src="<?php echo esc_attr( $url . 'eyes-idle.svg' ); ?>" alt="" data-key="eyes-idle"> |
| 132 |
<img src="<?php echo esc_attr( $url . 'eyes-happy.svg' ); ?>" alt="" data-key="eyes-happy"> |
| 133 |
<img src="<?php echo esc_attr( $url . 'eyes-error.svg' ); ?>" alt="" data-key="eyes-error"> |
| 134 |
<img src="<?php echo esc_attr( $url . 'eyes-loading.svg' ); ?>" alt="" data-key="eyes-loading"> |
| 135 |
</span> |
| 136 |
<span class="automatorwp-ai-assistant-mouth"> |
| 137 |
<img src="<?php echo esc_attr( $url . 'mouth-idle.svg' ); ?>" alt="" data-key="mouth-idle"> |
| 138 |
<img src="<?php echo esc_attr( $url . 'mouth-smile.svg' ); ?>" alt="" data-key="mouth-smile"> |
| 139 |
<img src="<?php echo esc_attr( $url . 'mouth-happy.svg' ); ?>" alt="" data-key="mouth-happy"> |
| 140 |
<img src="<?php echo esc_attr( $url . 'mouth-error.svg' ); ?>" alt="" data-key="mouth-error"> |
| 141 |
</span> |
| 142 |
</div> |
| 143 |
|
| 144 |
<?php |
| 145 |
} |