Bunu nasıl yapabiliriz ?
Muhtemelen lang altında ki dil dosyalarını admin panelinden değiştirmek istersiniz. Veya .env dosyasında elle bir değişiklik yapmak isteyebilirsiniz. Ftp ile uğraşmadan bu kısa yol sayesinde rahatlıkla halledebilirsiniz aslında.. Örneklendirdim tabi ama tüm dosyaları değiştirmek mümkün. Panelden kısayol vermenize de gerek yok. Bunun için kısa da olsa referans üzerinden anlattım.
Öncelikle kolay çağırmak ve etkileşimler için laravel, bize kendi komutlarımızı yazmamıza izin veriyor. Bu da çağırmak için kolay bir yol. Kullanımı gayet basit.
Nodejs üzerinden ilk deneyimlemiştim.
handle() fonksiyonu içerisine
$this->info('Başladık'); şeklinde bilgi mesajları gönderip , soru sorup seçmesini istemek ve sonuca yönelik işlem yaptırmasını sağlamak.

Laravel'in dışına çıkmaktan epey korkuyordum önceleri. Php yazmaya korkuyordum artık nasıl bir etki kapmışsam.
Direk php fonksiyonları kullanıyoruz. file_exists / mkdir / scandir / file_get_contents / file_put_contents
dibine kadar kullanın çekinmeyin. Kendi ayağıma pranga takmıştım bu şeyler yüzünden. Yapay engel yani. Laravelin kendi File sınıfını da kullanabilirsiniz.
Öncelikle başlıkta ki gibi bir değişiklik için ajax elzem. Tabi bir de highlight eklentisi.
Sol tarafta dosya ve alt dizinleri için bu dizinlerin listesini native php kullanır gibi çekip döngü içerisine almamız gerekiyor. Zaten yolları verdikten ajax için de iki adet güncelleme ve seçme için controller tanımlamamız gerekiyor. Buralara sadece ajax isteği gidecek. Ana dizin de ise bahsettiğim dosyalar yer alacak.

jquery-filetree / dizinleri listelemek için alt alta gelecek ağaç yapısı. Nested diye de geçiyor.
ACE / Kodları renklendirmek için
AJAX İÇİN
/**
* Get file content
*
* @return \Illuminate\Http\Response
*/
public function get_file(Request $request)
{
$filepath = $request->input('filepath');
$data = file_get_contents(base_path($filepath));
echo $data;
}
/**
* Save file content
*
* @return \Illuminate\Http\Response
*/
public function save_file(Request $request)
{
$filepath = $request->input('filepath');
$filedata = $request->input('filedata');
$data = file_put_contents(base_path($filepath), $filedata);
return response()->json(['success' => true]);
}
Front tarafında
Not: mantık vermesi için bu koyuyorum sadece bu şekilde kopyala yapıştır yaparsanız çalışmaz. Çünkü bahsettiğim eklentileri tanıtması, kullanması gibi şeyler var. Onları eklersem çok fazla uzar.
function loadFileCode(filepath, reload) {
// console.log("loadFileCode: "+filepath+" contains: "+fileContains(filepath));
if(!fileContains(filepath)) {
$.ajax({
url: "{{ url(config('project.adminRoute') . '/project_get_file?_token=' . csrf_token()) }}",
method: 'POST',
data: {"filepath": filepath},
async: false,
success: function( data ) {
editor.setValue(data, -1);
editor.focus();
// ... Editöre ait olan ayarlar.
$openFiles.push($file);
var filename = filepath.replace(/^.*[\\\/]/, '');
$laetabs.append('<li filepath="'+filepath+'">'+filename+'</li>');
highlightFileTab(filepath);
}
});
}
}
Route kısmı laraadmin örneğinde ki gibi
/* ================== Code Editor ================== */
Route::get(config('laraadmin.adminRoute') . '/laeditor', 'CodeEditorController@index');
Route::any(config('laraadmin.adminRoute') . '/laeditor_get_dir', 'CodeEditorController@get_dir');
Route::post(config('laraadmin.adminRoute') . '/laeditor_get_file', 'CodeEditorController@get_file');
Route::post(config('laraadmin.adminRoute') . '/laeditor_save_file', 'CodeEditorController@save_file');
Dil dosyalarını değiştirmek için buna gerek olduğunu sanmıyorum tabi. Onun için veritabanı tablosu hoş olur. Yeni bir güncelleme olduğunda olan dosyalar üzerine tekrar dilleri yazabilir. Siz ise bunun için değerleri ve inputları gösteren bir modal/popup sunabilirsiniz.
Tüm işi yapan controller burada. Bahsettiğim döngü de içerisinde
public function get_dir(Request $request)
{
$root = base_path() . DIRECTORY_SEPARATOR;
// "C:\Users\fizikci\Desktop\dev\la1\"
$postDir = rawurldecode(base_path($request->get('dir')));
if (file_exists($postDir))
{
$files = scandir($postDir);
// dd($files);
$returnDir = substr($postDir, strlen($root));
natcasesort($files);
if (count($files) > 2)
{ // The 2 accounts for . and ..
echo "<ul class='jqueryFileTree'>";
foreach ($files as $file)
{
$htmlRel = htmlentities($returnDir . $file);
$htmlName = htmlentities($file);
$ext = preg_replace('/^.*\./', '', $file);
if (file_exists($postDir . $file) && $file != '.' && $file != '..')
{
if (is_dir($postDir . $file))
{
echo "<li class='directory collapsed'><a rel='" . $htmlRel . "/'>" . $htmlName . "</a></li>";
}
else
{
echo "<li class='file ext_{$ext}'><a rel='" . $htmlRel . "'>" . $htmlName . "</a></li>";
}
}
}
echo "</ul>";
}
}
}
Son olarak pakete ihtiyacınız yok ancak hali hazırda paketler var .Bence yapabileceğiniz şeyler için paket kullanmamak mayışmamanızı ve daha çok şey öğrenmenizi sağlar karşılacağınız problemleri kaçırmayın derim. Ayrıca paket şeklinde yazmanızda yarar var. Yine yazmak istemezseniz laraadmin yarım admin panelini kurup içerisinden bu alanı kendinize taşıyabilirsiniz.